diff --git a/package.json b/package.json index b1691f038..18b513fa5 100644 --- a/package.json +++ b/package.json @@ -181,8 +181,6 @@ "gen:models": "bun --cwd=packages/catalog run gen:models", "gen:stats": "bun --cwd=packages/stats run gen:stats", "gen:stats:reset": "bun --cwd=packages/stats run gen:stats:reset", - "gen:docs": "bun --cwd=packages/coding-agent run gen:docs", - "gen:docs:reset": "bun --cwd=packages/coding-agent run gen:docs:reset", "gen:changelog": "bun scripts/rewrite-changelog.ts", "gen:tool-views": "bun --cwd=packages/collab-web run gen:tool-views", "gen:bundle": "bun --cwd=packages/coding-agent run gen:bundle", diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index fa5b3d9d6..a167d7e75 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -20,12 +20,15 @@ - Clarified that prerequisite work for subagent tasks should be handled inline by the main agent - HTML search requests now use a randomized, internally consistent desktop Chrome profile per request; Google, Ecosia, and Mojeek try fetch first and escalate blocked or failed production responses to the shared stealth browser. - Reordered credential-free web search engines from live quality measurements: Startpage (Google-backed, fastest and most reliable in testing) now leads the auto chain, Ecosia precedes the flakier browser-backed Google, and Mojeek stays last; the Public Web fan-out tiebreak now favors Google-index engines (Startpage, Google) so their ranking wins equal-consensus ties. +- Replaced the generated legacy Pi bundled-module registry and duplicate key list with an in-memory Bun build plugin that derives static compile edges directly from current package exports; binary builds no longer generate, format, or reset thousands of lines of compatibility source. +- Replaced the generated `docs-index.generated.txt` file and its surrounding build-time reset orchestration with an in-memory compiler define (`process.env.PI_DOCS_EMBED`); compiled executables and prepacked npm bundles are inlined directly from the source `docs/` Markdown corpus without writing to the working tree. ### Removed - Removed the bundled `plan` subagent from available task agents ### Fixed +- Fixed compiled-binary extensions failing to load napi-rs/FFI dependencies whose CommonJS loader requires a platform package with a native `.node` main (for example `@yuuang/ffi-rs-darwin-arm64`). The extension loader now resolves those platform packages against the extension's own `node_modules`, pins each require to the addon's absolute path, and serves the rewritten CommonJS loader synchronously so Bun can `require()` it. - Fixed the `omp search` / `omp q` CLI command hanging instead of exiting cleanly after search execution by ensuring the internally discovered `AuthStorage` connection is properly closed. - Fixed `write` blocking for the full 3-second LSP diagnostics poll in main-agent sessions by wiring it into the deferred late-diagnostics channel; slow diagnostics now return after the short inline window and arrive as an aside. - Fixed `tab.fill`/`tab.click` (and every puppeteer Locator action) timing out after 15s on all pages: the stealth patch routes default `Frame.evaluate`/`waitForFunction` through the isolated world, but `waitForSelector`/Locator results were still transferred to the main world, so Locator's enabled-precondition (`handle.frame.waitForFunction(pred, opts, handle)`) and `page.evaluate(fn, handle)` threw a cross-context handle error that Locators retried silently until timeout. `QueryHandler.waitFor` now returns its result in the isolated world, matching the patched default realm; explicit `//!world=main` evaluation still adopts handles via ElementHandle diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 3e74c712d..6a1ace816 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -32,24 +32,20 @@ }, "scripts": { "build": "bun scripts/build-binary.ts", - "check": "biome check . && bun run check:docs && bun run check:types", - "check:docs": "bun scripts/generate-docs-index.ts --check", + "check": "biome check . && bun run check:types", "check:types": "tsgo -p tsconfig.json --noEmit", "lint": "biome lint .", "test": "bun ../../scripts/ci-test-ts.ts coding-agent-heavy --full", "fix": "biome check --write --unsafe . && bun run format-prompts", "fmt": "biome format --write . && bun run format-prompts", "format-prompts": "bun scripts/format-prompts.ts", - "gen:docs": "bun scripts/generate-docs-index.ts --generate", - "gen:docs:reset": "bun scripts/generate-docs-index.ts --reset", "gen:tool-views": "bun --cwd=../collab-web run gen:tool-views", "gen:bundle": "bun scripts/bundle-dist.ts", "gen:mupdf": "bun scripts/embed-mupdf-wasm.ts --generate", "gen:mupdf:reset": "bun scripts/embed-mupdf-wasm.ts --reset", "gen:native": "bun --cwd=../natives run gen:native", "gen:native:reset": "bun --cwd=../natives run gen:native:reset", - "prepack": "bun run gen:docs && bun run gen:tool-views && bun run gen:bundle || ( bun run gen:docs:reset; exit 1 )", - "postpack": "bun run gen:docs:reset", + "prepack": "bun run gen:tool-views && bun run gen:bundle", "bench:guard": "bun scripts/bench-guard.ts" }, "dependencies": { diff --git a/packages/coding-agent/scripts/build-binary.ts b/packages/coding-agent/scripts/build-binary.ts index cf8ae3ebd..c5659d02b 100644 --- a/packages/coding-agent/scripts/build-binary.ts +++ b/packages/coding-agent/scripts/build-binary.ts @@ -2,17 +2,41 @@ import { createRequire } from "node:module"; import * as path from "node:path"; +import { compileCodingAgent } from "./compile-binary"; const packageDir = path.join(import.meta.dir, ".."); const repoRoot = path.join(packageDir, "..", ".."); -// Optional cross-compile target, e.g. CROSS_TARGET=linux-arm64 → bun build -// --target=bun-linux-arm64, embeds the matching native, outputs dist/omp-. -const crossTarget = Bun.env.CROSS_TARGET || null; -const [crossPlatform, crossArch] = crossTarget ? crossTarget.split("-") : [null, null]; -// x64 uses the baseline bun runtime so it runs under Rosetta / pre-AVX2 CPUs -// (the modern bun-linux-x64 target SIGILLs under Apple-Silicon Rosetta). -const bunTarget = crossTarget ? (crossTarget === "linux-x64" ? "bun-linux-x64-baseline" : `bun-${crossTarget}`) : null; -const outName = crossTarget ? `omp-${crossTarget}` : "omp"; + +interface CrossBuild { + readonly id: string; + readonly platform: string; + readonly arch: string; + readonly target: Bun.Build.CompileTarget; +} + +function resolveCrossBuild(value: string | undefined): CrossBuild | null { + switch (value) { + case undefined: + case "": + return null; + case "darwin-arm64": + return { id: value, platform: "darwin", arch: "arm64", target: "bun-darwin-arm64" }; + case "darwin-x64": + return { id: value, platform: "darwin", arch: "x64", target: "bun-darwin-x64" }; + case "linux-arm64": + return { id: value, platform: "linux", arch: "arm64", target: "bun-linux-arm64" }; + case "linux-x64": + return { id: value, platform: "linux", arch: "x64", target: "bun-linux-x64-baseline" }; + case "win32-x64": + case "windows-x64": + return { id: value, platform: "win32", arch: "x64", target: "bun-windows-x64-modern" }; + default: + throw new Error(`Unsupported CROSS_TARGET: ${value}`); + } +} + +const crossBuild = resolveCrossBuild(Bun.env.CROSS_TARGET); +const outName = crossBuild ? `omp-${crossBuild.id}` : "omp"; const outputPath = path.join(packageDir, "dist", outName); // Transformers.js is an optional, native-heavy dependency that is never bundled @@ -20,12 +44,19 @@ const outputPath = path.join(packageDir, "dist", outName); // on first use. The `catalog:` spec cannot be resolved from inside the compiled // bunfs (issue #1763), so embed the concrete installed version here for the // worker to pin its runtime install against. -const transformersVersion = ( - createRequire(import.meta.url)("@huggingface/transformers/package.json") as { version: string } -).version; +const transformersManifest: unknown = createRequire(import.meta.url)("@huggingface/transformers/package.json"); +if ( + typeof transformersManifest !== "object" || + transformersManifest === null || + !("version" in transformersManifest) || + typeof transformersManifest.version !== "string" +) { + throw new Error("@huggingface/transformers package manifest has no string version"); +} +const transformersVersion = transformersManifest.version; function shouldAdhocSignDarwinBinary(): boolean { - return process.platform === "darwin" && !crossTarget; + return process.platform === "darwin" && !crossBuild; } async function runCommand( @@ -50,73 +81,26 @@ async function main(): Promise { // placeholders (stats client archive, docs index) even on failure. try { await runCommand(["bun", "--cwd=../stats", "run", "gen:stats"]); - await runCommand(["bun", "run", "gen:docs"]); - // `legacy-pi-bundled-registry.ts` static-imports - // `@oh-my-pi/pi-coding-agent/export/html` (one of pi-coding-agent's - // named subpath exports, see scripts/generate-legacy-pi-bundled-registry.ts), - // whose source pulls in `tool-views.generated.js`. The root - // `package.json` "prepare" lifecycle hook builds that file on - // `bun install`, but a clean binary build that skips install hooks - // would `bun build --compile` against the registry entry and fail - // resolving the missing generated bundle. Rebuilding the tool views - // here makes the compile self-contained and matches what `prepack` - // does for the npm bundle. + // The in-memory legacy Pi virtual module reaches the coding-agent + // `export/html` subpath, whose source imports `tool-views.generated.js`. + // Rebuild it before compilation so clean checkouts that skipped install + // hooks still contain that generated bundle. await runCommand(["bun", "--cwd=../collab-web", "run", "gen:tool-views"]); await runCommand( ["bun", "--cwd=../natives", "run", "gen:native"], - crossTarget - ? { ...Bun.env, TARGET_PLATFORM: crossPlatform as string, TARGET_ARCH: crossArch as string } - : Bun.env, + crossBuild ? { ...Bun.env, TARGET_PLATFORM: crossBuild.platform, TARGET_ARCH: crossBuild.arch } : Bun.env, ); await runCommand(["bun", "run", "gen:mupdf"]); - // Regenerate the bundled-pi registry + key set before the compile so any - // new pi-* subpath export added under `packages/*/package.json` is served - // from the host's in-process copy. Without this, `bun build --compile` - // would freeze whatever the committed registry happened to enumerate at - // the time of the last manual `--generate`, and a new subpath added - // since then would crash extension validation with `Cannot find module` - // (issue #3442). The generator also normalizes formatting, so the diff - // against the committed copy stays clean. - await runCommand(["bun", "scripts/generate-legacy-pi-bundled-registry.ts", "--generate"]); try { - const buildEnv = shouldAdhocSignDarwinBinary() ? { ...Bun.env, BUN_NO_CODESIGN_MACHO_BINARY: "1" } : Bun.env; - await runCommand( - [ - "bun", - "build", - "--compile", - ...(bunTarget ? ["--target", bunTarget] : []), - "--no-compile-autoload-bunfig", - "--no-compile-autoload-dotenv", - "--no-compile-autoload-tsconfig", - "--no-compile-autoload-package-json", - "--keep-names", - "--define", - 'process.env.PI_COMPILED="true"', - "--define", - `process.env.PI_TINY_TRANSFORMERS_VERSION=${JSON.stringify(transformersVersion)}`, - "--external", - "fastembed", - "--external", - "onnxruntime-node", - "--root", - ".", - "./packages/coding-agent/src/cli.ts", - // Legacy pi-* extension compat surfaces (host packages + shims) - // were previously listed as explicit `--compile` entries so the - // rewrite path could emit `/$bunfs/root/...` URLs against them. - // Bun 1.3.14 made bunfs files unreachable at runtime (issue - // #3423), so `legacy-pi-compat.ts` now serves them through a - // virtual namespace backed by `legacy-pi-bundled-registry.ts`, - // which static-imports each surface — the bundler already - // includes them via the main module graph, so no `--compile` - // extras are required. - "--outfile", - `packages/coding-agent/dist/${outName}`, - ], - buildEnv, + await compileCodingAgent({ repoRoot, - ); + entrypoint: path.join(packageDir, "src", "cli.ts"), + outfile: outputPath, + transformersVersion, + target: crossBuild?.target, + external: ["fastembed", "onnxruntime-node"], + skipBuiltinCodesign: shouldAdhocSignDarwinBinary(), + }); // Bun 1.3.12 emits a truncated Mach-O signature on darwin builds. if (shouldAdhocSignDarwinBinary()) { @@ -128,7 +112,6 @@ async function main(): Promise { } } finally { await runCommand(["bun", "--cwd=../stats", "run", "gen:stats:reset"]); - await runCommand(["bun", "run", "gen:docs:reset"]); } } diff --git a/packages/coding-agent/scripts/bundle-dist.ts b/packages/coding-agent/scripts/bundle-dist.ts index af8bb152b..49c18e24f 100755 --- a/packages/coding-agent/scripts/bundle-dist.ts +++ b/packages/coding-agent/scripts/bundle-dist.ts @@ -3,17 +3,24 @@ import * as fs from "node:fs/promises"; import * as path from "node:path"; import { isEnoent } from "@oh-my-pi/pi-utils"; -import { assertDocsIndexFresh, buildDocsIndexPayload } from "./generate-docs-index"; +import { buildDocsIndexPayload } from "./generate-docs-index"; const packageDir = path.join(import.meta.dir, ".."); const outDir = path.join(packageDir, "dist"); const cliPath = path.join(outDir, "cli.js"); const shebang = "#!/usr/bin/env bun\n"; -// Native / optional / platform-specific deps that are never bundled — installed on -// demand (transformers/fastembed/onnxruntime) or shipped as their own artifact -// (native addon, mupdf). -const ALWAYS_EXTERNAL = ["mupdf", "@oh-my-pi/pi-natives", "@huggingface/transformers", "fastembed", "onnxruntime-node"]; +// Native / optional / platform-specific deps are loaded from installed files. +// `omp-legacy-pi-modules` exists only in compiled binaries via the build plugin; +// the npm bundle never executes that `isCompiledBinary()` branch. +const ALWAYS_EXTERNAL = [ + "mupdf", + "@oh-my-pi/pi-natives", + "@huggingface/transformers", + "fastembed", + "onnxruntime-node", + "omp-legacy-pi-modules", +]; // Heavy, lazily-used third-party leaf deps. Each is a declared `dependency`, so the // published package resolves it from node_modules at runtime; bundling only embeds a @@ -73,31 +80,12 @@ async function cleanBundleOutputs(): Promise { ); } -async function assertDocsEmbedPopulated(): Promise { - // bundle-dist runs from prepack (which calls `gen:docs` first) or directly. - // Direct invocations must fail — the tarball ships src/, and an empty embed - // would make src/internal-urls/docs-index.ts fall through to the missing - // repo `docs/` tree at runtime in published packages (codex review, PR #3941). - const embedPath = path.join(packageDir, "src/internal-urls/docs-index.generated.txt"); - const embed = await Bun.file(embedPath).text(); - if (embed.length === 0) { - throw new Error( - "docs-index embed is empty. Run `bun run gen:docs` before `bun run gen:bundle`, or use `bun pm pack` which runs the prepack chain.", - ); - } - const expected = await buildDocsIndexPayload(); - assertDocsIndexFresh(embed, expected); -} - async function main(): Promise { const start = Bun.nanoseconds(); await cleanBundleOutputs(); - await assertDocsEmbedPopulated(); // The npm bundle ships no stats dashboard sources, so embed the dashboard // archive the same way compiled binaries do (scripts/build-binary.ts). Reset - // afterwards to keep the checked-in placeholder empty. The docs embed stays - // populated on disk — postpack owns its reset so `bun pm pack` can pack a - // tarball whose src copy is still valid for subpath imports. + // afterwards to keep the checked-in placeholder empty. await runCommand(["bun", "--cwd=../stats", "run", "gen:stats"]); try { await runCommand([ @@ -106,13 +94,13 @@ async function main(): Promise { "--target=bun", "--outdir", "dist", - // Full minify (whitespace + syntax + identifiers); --keep-names retains - // fn/class .name where code depends on it. "--minify", "--keep-names", ...[...ALWAYS_EXTERNAL, ...RUNTIME_EXTERNAL].flatMap(dep => ["--external", dep]), "--define", 'process.env.PI_BUNDLED="true"', + "--define", + `process.env.PI_DOCS_EMBED=${JSON.stringify((await buildDocsIndexPayload()).payload)}`, "./src/cli.ts", ]); } finally { diff --git a/packages/coding-agent/scripts/compile-binary.ts b/packages/coding-agent/scripts/compile-binary.ts new file mode 100644 index 000000000..a8b7d4885 --- /dev/null +++ b/packages/coding-agent/scripts/compile-binary.ts @@ -0,0 +1,68 @@ +import { createLegacyPiVirtualModulePlugin } from "./legacy-pi-virtual-module"; +import { buildDocsIndexPayload } from "./generate-docs-index"; + +/** Inputs shared by local and release coding-agent binary builds. */ +export interface CodingAgentCompileOptions { + /** Absolute repository root used for package resolution. */ + readonly repoRoot: string; + /** Absolute CLI entrypoint. */ + readonly entrypoint: string; + /** Absolute standalone executable output path. */ + readonly outfile: string; + /** Concrete Transformers.js version baked into the tiny-model worker. */ + readonly transformersVersion: string; + /** Optional cross-compilation runtime target. */ + readonly target?: Bun.Build.CompileTarget; + /** Dependencies intentionally resolved from the runtime filesystem. */ + readonly external?: readonly string[]; + /** Match release builds that minify identifiers while retaining names. */ + readonly minifyIdentifiers?: boolean; + /** Disable Bun's built-in Darwin signing before the caller re-signs. */ + readonly skipBuiltinCodesign?: boolean; +} + +/** + * Compile the coding-agent executable with its legacy Pi compatibility module + * graph supplied by an in-memory build plugin rather than generated files. + */ +export async function compileCodingAgent(options: CodingAgentCompileOptions): Promise { + const previousCodesignSetting = Bun.env.BUN_NO_CODESIGN_MACHO_BINARY; + if (options.skipBuiltinCodesign) { + Bun.env.BUN_NO_CODESIGN_MACHO_BINARY = "1"; + } + try { + const output = await Bun.build({ + entrypoints: [options.entrypoint], + root: options.repoRoot, + external: options.external ? [...options.external] : undefined, + define: { + "process.env.PI_COMPILED": JSON.stringify("true"), + "process.env.PI_TINY_TRANSFORMERS_VERSION": JSON.stringify(options.transformersVersion), + "process.env.PI_DOCS_EMBED": JSON.stringify((await buildDocsIndexPayload()).payload), + }, + minify: { + identifiers: options.minifyIdentifiers ?? false, + keepNames: true, + }, + plugins: [await createLegacyPiVirtualModulePlugin()], + compile: { + ...(options.target ? { target: options.target } : {}), + outfile: options.outfile, + autoloadBunfig: false, + autoloadDotenv: false, + autoloadTsconfig: false, + autoloadPackageJson: false, + }, + throw: false, + }); + if (!output.success) { + throw new Error(`Coding-agent binary bundle failed:\n${output.logs.map(log => log.message).join("\n")}`); + } + } finally { + if (previousCodesignSetting === undefined) { + delete Bun.env.BUN_NO_CODESIGN_MACHO_BINARY; + } else { + Bun.env.BUN_NO_CODESIGN_MACHO_BINARY = previousCodesignSetting; + } + } +} diff --git a/packages/coding-agent/scripts/generate-docs-index.ts b/packages/coding-agent/scripts/generate-docs-index.ts old mode 100755 new mode 100644 index 9be6f7418..25aa86914 --- a/packages/coding-agent/scripts/generate-docs-index.ts +++ b/packages/coding-agent/scripts/generate-docs-index.ts @@ -1,38 +1,18 @@ -#!/usr/bin/env bun - -/** - * Populate, check, or reset the embedded harness documentation index for `omp://`. - * - * `--generate` writes `src/internal-urls/docs-index.generated.txt` as two lines: - * a plain JSON array of the sorted `docs/**\/*.md` file names, then a base64 - * gzip blob of the index-aligned doc bodies (`string[]`). `--check` rebuilds - * that payload from the real docs corpus and compares it to the embed when - * present; the checked-in empty placeholder is accepted after verifying that a - * fresh generated payload round-trips. `--reset` restores the placeholder so the - * dev tree reads `docs/` from disk. Mirrors the stats / model-catalog embeds. - */ - import * as path from "node:path"; import { gunzipSync, gzipSync } from "node:zlib"; import { Glob } from "bun"; -const docsDir = path.resolve(import.meta.dir, "../../../docs"); -const outputPath = path.resolve(import.meta.dir, "../src/internal-urls/docs-index.generated.txt"); -const GENERATE_FLAG = "--generate"; -const RESET_FLAG = "--reset"; -const CHECK_FLAG = "--check"; +const packageDir = path.resolve(import.meta.dir, ".."); +const docsDir = path.resolve(packageDir, "../../docs"); export interface DocsIndexPayload { - /** Sorted `docs/**\/*.md` file names plus index-aligned bodies and embed text. */ readonly files: readonly string[]; readonly bodies: readonly string[]; readonly payload: string; } export interface DecodedDocsIndexPayload { - /** Sorted `docs/**\/*.md` file names decoded from an embed payload. */ readonly files: readonly string[]; - /** Index-aligned Markdown bodies decoded from an embed payload. */ readonly bodies: readonly string[]; } @@ -40,7 +20,7 @@ function isStringArray(value: unknown): value is string[] { return Array.isArray(value) && value.every(item => typeof item === "string"); } -/** Build the exact two-line `omp://` docs embed from the source `docs/**\/*.md` corpus. */ +/** Build the exact two-line `omp://` docs embed from the source `docs` Markdown corpus. */ export async function buildDocsIndexPayload(): Promise { const glob = new Glob("**/*.md"); const files: string[] = []; @@ -76,73 +56,3 @@ export function decodeDocsIndexPayload(embed: string): DecodedDocsIndexPayload | return { files: filenames, bodies }; } - -/** - * Assert that an embed payload is fresh against the current source docs payload. - * An empty placeholder is accepted by round-tripping the expected payload (the - * dev tree and post-build reset state both checked-in placeholders). - */ -export function assertDocsIndexFresh(embed: string, expected: DecodedDocsIndexPayload): void { - const source = - embed.length > 0 - ? embed - : `${JSON.stringify(expected.files)}\n${Buffer.from(gzipSync(Buffer.from(JSON.stringify(expected.bodies)), { level: 9 })).toString("base64")}`; - const decoded = decodeDocsIndexPayload(source); - if (decoded === null) { - throw new Error("Embedded docs index is malformed: missing newline separator."); - } - if (decoded.files.length !== expected.files.length) { - throw new Error( - `Embedded docs index has ${decoded.files.length} docs; source corpus has ${expected.files.length}.`, - ); - } - if (decoded.bodies.length !== expected.bodies.length) { - throw new Error( - `Embedded docs index has ${decoded.bodies.length} bodies; source corpus has ${expected.bodies.length}.`, - ); - } - for (let i = 0; i < expected.files.length; i++) { - if (decoded.files[i] !== expected.files[i]) { - throw new Error( - `Embedded docs index filename mismatch at ${i}: ${decoded.files[i] ?? ""} !== ${expected.files[i]}.`, - ); - } - if (decoded.bodies[i] !== expected.bodies[i]) { - throw new Error(`Embedded docs index body mismatch for ${expected.files[i]}. Run \`bun run gen:docs\`.`); - } - } -} - -async function main(): Promise { - const rel = path.relative(process.cwd(), outputPath); - - if (process.argv.includes(RESET_FLAG)) { - await Bun.write(outputPath, ""); - process.stdout.write(`Reset ${rel}\n`); - return; - } - - if (process.argv.includes(CHECK_FLAG)) { - const current = await buildDocsIndexPayload(); - const embed = await Bun.file(outputPath).text(); - assertDocsIndexFresh(embed, current); - process.stdout.write(`Docs index fresh for ${current.files.length} docs (${rel})\n`); - return; - } - - if (!process.argv.includes(GENERATE_FLAG)) { - process.stdout.write( - `Skipping ${rel}; pass ${GENERATE_FLAG} to embed docs (the dev tree reads docs/ from disk)\n`, - ); - return; - } - - const current = await buildDocsIndexPayload(); - assertDocsIndexFresh(current.payload, current); - await Bun.write(outputPath, current.payload); - process.stdout.write(`Generated ${rel} (${current.files.length} docs, ${current.payload.length} bytes)\n`); -} - -if (import.meta.main) { - await main(); -} diff --git a/packages/coding-agent/scripts/generate-legacy-pi-bundled-registry.ts b/packages/coding-agent/scripts/generate-legacy-pi-bundled-registry.ts deleted file mode 100755 index 6e686cf38..000000000 --- a/packages/coding-agent/scripts/generate-legacy-pi-bundled-registry.ts +++ /dev/null @@ -1,420 +0,0 @@ -#!/usr/bin/env bun - -/** - * Generate the bundled-pi registry + key set served by the compiled binary's - * `omp-legacy-pi-bundled:` virtual namespace. - * - * Compiled-mode extension validation routes every `@(scope)/pi-*` import - * through this registry — bunfs filesystem APIs are unreachable on Bun 1.3.14+ - * (issue #3423), so the binary serves bundled module surfaces from JS-heap - * references captured at build time. Bare package roots and every - * `non-wildcard` subpath export declared in each bundled pi-* package.json - * become a registry entry; wildcard subpath patterns are intentionally - * unbundled — those resolve from the extension's own peer deps as before. - * - * The generator emits two files: - * - `legacy-pi-bundled-registry.ts` (heavy): static imports of every - * subpath module + the `BUNDLED_PI_REGISTRY` map. Dynamically loaded by - * `legacy-pi-compat.ts` so dev/test runs never pay the cascade. - * - `legacy-pi-bundled-keys.ts` (light): just the canonical-key set. - * Statically imported by `legacy-pi-compat.ts` to seed - * `LEGACY_PI_PACKAGE_ROOT_OVERRIDES` without touching the heavy graph. - * - * Run via `bun scripts/generate-legacy-pi-bundled-registry.ts --generate` - * (also invoked from `scripts/build-binary.ts` before `bun build --compile`). - */ - -import * as fs from "node:fs/promises"; -import * as path from "node:path"; - -const packageDir = path.resolve(import.meta.dir, ".."); -const repoRoot = path.resolve(packageDir, "..", ".."); -const registryOutPath = path.join(packageDir, "src/extensibility/plugins/legacy-pi-bundled-registry.ts"); -const keysOutPath = path.join(packageDir, "src/extensibility/plugins/legacy-pi-bundled-keys.ts"); - -const GENERATE_FLAG = "--generate"; -const CHECK_FLAG = "--check"; - -interface BundledPackage { - readonly dir: string; - readonly name: string; - /** Identifier prefix for generated namespace imports (`PiAi`, `PiCodingAgent`, …). */ - readonly identifier: string; - /** Root import — the shim path for surfaces that wrap the bundled namespace, `null` otherwise. */ - readonly rootShim: string | null; -} - -const PACKAGES: readonly BundledPackage[] = [ - { dir: "packages/agent", name: "@oh-my-pi/pi-agent-core", identifier: "PiAgentCore", rootShim: null }, - { - dir: "packages/ai", - name: "@oh-my-pi/pi-ai", - identifier: "PiAi", - // pi-ai 15.1.0 dropped the runtime `Type` builder from the package root; - // the shim re-attaches it for extensions that still import `Type` from - // `@(scope)/pi-ai`. Subpaths bypass the shim — they're untouched by the - // schema-runtime split. - rootShim: "../legacy-pi-ai-shim", - }, - { - dir: "packages/coding-agent", - name: "@oh-my-pi/pi-coding-agent", - identifier: "PiCodingAgent", - // pi-coding-agent root carries legacy helpers (`defineTool`, - // `createCodingTools`, …) the canonical entry never exposed; the shim - // re-exports the canonical surface plus those helpers. - rootShim: "../legacy-pi-coding-agent-shim", - }, - { dir: "packages/natives", name: "@oh-my-pi/pi-natives", identifier: "PiNatives", rootShim: null }, - { dir: "packages/tui", name: "@oh-my-pi/pi-tui", identifier: "PiTui", rootShim: null }, - { dir: "packages/utils", name: "@oh-my-pi/pi-utils", identifier: "PiUtils", rootShim: null }, -]; - -// `typebox` is published under an upstream alias; legacy extensions import the -// bare name expecting the host-provided Zod-backed shim. Tracked alongside the -// pi-* surfaces so the override map and synthesizer cover it uniformly. -const TYPEBOX_REGISTRY_KEY = "typebox"; -const TYPEBOX_SHIM_IMPORT = "../typebox"; - -interface RegistryEntry { - /** Canonical registry key, e.g. `@oh-my-pi/pi-ai/oauth`. */ - readonly key: string; - /** Identifier bound in the generated module's static import. */ - readonly binding: string; - /** - * ES module specifier the generated file imports. For bundled subpaths this - * is the canonical `@oh-my-pi//` string Bun resolves via the - * package's exports field; for shimmed surfaces (root of pi-ai / pi-coding-agent - * / typebox) it's the relative path to the in-tree shim. - */ - readonly importSpecifier: string; -} - -function bindingForSubpath(identifier: string, subpath: string): string { - const segments = subpath - .split("/") - .filter(Boolean) - .map(segment => - segment - .split(/[-_]/) - .filter(Boolean) - .map(part => part.charAt(0).toUpperCase() + part.slice(1)) - .join(""), - ); - return `bundled${identifier}${segments.join("")}`; -} - -// Skip files whose presence on disk is meaningful to the build pipeline rather -// than something a plugin would import: editor backups (`_*`, `.*`), tests, -// declaration files, and conventional `index` files (already covered by the -// non-wildcard root of the same directory when one is declared). -const SKIPPED_WILDCARD_BASENAMES = new Set(["index"]); - -function isSafeWildcardBasename(basename: string): boolean { - if (!basename || basename.startsWith(".") || basename.startsWith("_")) return false; - if (SKIPPED_WILDCARD_BASENAMES.has(basename)) return false; - if (/\.(test|spec|d|generated|bench)$/.test(basename)) return false; - return true; -} - -// Worker entry modules intentionally throw when imported outside a Worker. The -// bundled registry loads on the main thread during legacy extension validation, -// so these exported subpaths must stay out of the static registry. -const MAIN_THREAD_UNSAFE_WILDCARD_BASENAMES = new Set(["worker-entry"]); - -function isMainThreadSafeWildcardBasename(basename: string): boolean { - return !MAIN_THREAD_UNSAFE_WILDCARD_BASENAMES.has(basename); -} - -interface WildcardPattern { - readonly exportPrefix: string; - readonly exportSuffix: string; - readonly sourcePrefix: string; - readonly sourceSuffix: string; -} - -/** - * Parse a single-asterisk Node exports wildcard into its prefix/suffix halves. - * Returns `null` for patterns with more than one asterisk or non-relative - * sources — neither shows up in our packages today and the generator stays - * conservative rather than guessing. - */ -function parseWildcardPattern(exportKey: string, sourcePattern: string): WildcardPattern | null { - const exportStar = exportKey.indexOf("*"); - const sourceStar = sourcePattern.indexOf("*"); - if (exportStar === -1 || sourceStar === -1) return null; - if (exportKey.indexOf("*", exportStar + 1) !== -1) return null; - if (sourcePattern.indexOf("*", sourceStar + 1) !== -1) return null; - if (!sourcePattern.startsWith("./")) return null; - return { - exportPrefix: exportKey.slice(2, exportStar), - exportSuffix: exportKey.slice(exportStar + 1), - sourcePrefix: sourcePattern.slice(2, sourceStar), - sourceSuffix: sourcePattern.slice(sourceStar + 1), - }; -} - -function exportImportTarget(value: unknown): string | null { - if (typeof value === "string") return value; - if (value && typeof value === "object" && "import" in value) { - const target = (value as { import?: unknown }).import; - return typeof target === "string" ? target : null; - } - return null; -} - -async function collectEntries(): Promise { - const entries: RegistryEntry[] = []; - const seenKeys = new Set(); - function pushEntry(key: string, binding: string, importSpecifier: string): void { - if (seenKeys.has(key)) return; - seenKeys.add(key); - entries.push({ key, binding, importSpecifier }); - } - - for (const pkg of PACKAGES) { - const manifestPath = path.join(repoRoot, pkg.dir, "package.json"); - const manifest = (await Bun.file(manifestPath).json()) as { name?: string; exports?: Record }; - if (manifest.name !== pkg.name) { - throw new Error( - `generate-legacy-pi-bundled-registry: package.json at ${manifestPath} declares "${manifest.name}", expected "${pkg.name}"`, - ); - } - const exportsField = manifest.exports ?? {}; - // Root: shim if one is declared, otherwise the canonical package. - pushEntry(pkg.name, `bundled${pkg.identifier}`, pkg.rootShim ?? pkg.name); - // Pass 1: every non-wildcard subpath export becomes its own registry key. - for (const exportKey in exportsField) { - if (!exportKey.startsWith("./") || exportKey === "." || exportKey.includes("*")) continue; - const subpath = exportKey.slice(2); - pushEntry(`${pkg.name}/${subpath}`, bindingForSubpath(pkg.identifier, subpath), `${pkg.name}/${subpath}`); - } - // Pass 2: expand wildcard exports against the source tree so plugins can - // import concrete subpath targets — e.g. `@(scope)/pi-ai/oauth/anthropic` - // remaps to `@oh-my-pi/pi-ai/oauth/anthropic`, covered by pi-ai's - // `./oauth/*` export pattern, which Node only resolves at runtime against - // a real `node_modules`. Compiled bunfs can't resolve at runtime, so we - // statically enumerate the concrete files now (issue #3442 follow-up). - // Root catch-all patterns (`./*`, `./*.js`) are skipped intentionally: - // the pi-coding-agent root is the binary entry's source tree, so static- - // importing every top-level file would drag `cli.ts`/`main.ts` through a - // second graph and explode the bundle for no plugin-facing benefit. - for (const exportKey in exportsField) { - if (!exportKey.startsWith("./") || exportKey === "." || !exportKey.includes("*")) continue; - const sourcePattern = exportImportTarget(exportsField[exportKey]); - if (!sourcePattern) continue; - const pattern = parseWildcardPattern(exportKey, sourcePattern); - if (!pattern) continue; - // Limit to JS-loadable source modules. `./prompts/*` mapping to - // `*.md` would emit a `import * as foo from "@(pkg)/prompts/"` - // that Bun can't load as a JS module. - if (!/\.(ts|tsx|mts|cts|js|mjs|cjs|jsx)$/.test(pattern.sourceSuffix)) continue; - // Skip root catch-alls (prefix is empty before the wildcard). See - // the explanatory block comment above for the bundle-explosion - // reasoning. Named wildcards like `./oauth/*` keep `oauth/` here. - if (pattern.exportPrefix === "" || pattern.exportPrefix === "/") continue; - - const sourceDir = path.join(repoRoot, pkg.dir, pattern.sourcePrefix); - try { - const glob = new Bun.Glob(`*${pattern.sourceSuffix}`); - const matches: string[] = []; - for await (const match of glob.scan({ cwd: sourceDir, onlyFiles: true })) { - matches.push(match); - } - matches.sort(); - for (const match of matches) { - if (!match.endsWith(pattern.sourceSuffix)) continue; - const basename = match.slice(0, match.length - pattern.sourceSuffix.length); - if (!isSafeWildcardBasename(basename)) continue; - if (!isMainThreadSafeWildcardBasename(basename)) continue; - if (basename.includes("/")) continue; - const subpath = `${pattern.exportPrefix}${basename}${pattern.exportSuffix}`; - const key = `${pkg.name}/${subpath}`; - pushEntry(key, bindingForSubpath(pkg.identifier, subpath), key); - } - } catch (err) { - // Missing source dir means the wildcard is declared in - // package.json but the implementation tree hasn't shipped that - // folder yet. Leave it to runtime resolution. - if ((err as NodeJS.ErrnoException).code !== "ENOENT") throw err; - } - } - } - entries.push({ - key: TYPEBOX_REGISTRY_KEY, - binding: "bundledTypeBoxShim", - importSpecifier: TYPEBOX_SHIM_IMPORT, - }); - const seenBindings = new Set(); - for (const entry of entries) { - if (seenBindings.has(entry.binding)) { - throw new Error( - `generate-legacy-pi-bundled-registry: duplicate binding ${entry.binding} for key ${entry.key}`, - ); - } - seenBindings.add(entry.binding); - } - return entries; -} - -function renderRegistry(entries: readonly RegistryEntry[]): string { - const importLines = entries.map( - entry => `import * as ${entry.binding} from ${JSON.stringify(entry.importSpecifier)};`, - ); - const registryLines = entries.map( - entry => `\t${JSON.stringify(entry.key)}: ${entry.binding} as unknown as Readonly>,`, - ); - return [ - "// AUTO-GENERATED by scripts/generate-legacy-pi-bundled-registry.ts.", - "// Do not edit by hand — run `bun scripts/generate-legacy-pi-bundled-registry.ts --generate`.", - "/**", - " * Static handles on every bundled `@oh-my-pi/pi-*` surface — package", - " * roots plus every non-wildcard subpath export declared in each package's", - " * `exports` field. Loaded lazily by `legacy-pi-compat.ts` in compiled-binary", - " * mode (issue #3423) and re-exported through the `omp-legacy-pi-bundled:`", - " * virtual namespace — bunfs paths cannot be resolved at runtime on Bun", - " * 1.3.14+, so the only way to re-route extension imports onto the host's", - " * in-process copy is via live module references captured at compile time.", - " *", - " * This module is split out from `legacy-pi-compat.ts` so dev/test runs that", - " * touch the compat layer never trigger the cascade through", - " * `legacy-pi-coding-agent-shim.ts → ../index → export/html/...` (which", - " * requires generated artifacts that only exist after a `bun run build`).", - " *", - " * The bundler reaches every entry below via standard static-import analysis,", - " * so no `--compile` extras are required in `scripts/build-binary.ts`.", - " */", - ...importLines, - "", - "/**", - " * Canonical specifier → live module namespace. Keys MUST match the right-hand", - " * side of `bundledRegistryVirtualSpecifier(...)` calls in", - " * `legacy-pi-compat.ts`; the synthesizer enumerates each namespace's own", - " * enumerable exports at extension load time. The companion", - " * `legacy-pi-bundled-keys.ts` mirrors `Object.keys(BUNDLED_PI_REGISTRY)` and", - " * is statically imported by `legacy-pi-compat.ts` to seed the override map", - " * without paying the cascade above.", - " */", - "export const BUNDLED_PI_REGISTRY: Readonly>>> = {", - ...registryLines, - "};", - "", - ].join("\n"); -} - -function renderKeys(entries: readonly RegistryEntry[]): string { - const keyLines = entries.map(entry => `\t${JSON.stringify(entry.key)},`); - return [ - "// AUTO-GENERATED by scripts/generate-legacy-pi-bundled-registry.ts.", - "// Do not edit by hand — run `bun scripts/generate-legacy-pi-bundled-registry.ts --generate`.", - "/**", - " * Canonical keys served by the `omp-legacy-pi-bundled:` virtual namespace.", - " * Mirrors `Object.keys(BUNDLED_PI_REGISTRY)` from", - " * `legacy-pi-bundled-keys.ts`'s sibling registry file. `legacy-pi-compat.ts`", - " * statically imports this set to seed `LEGACY_PI_PACKAGE_ROOT_OVERRIDES` in", - " * compiled-binary mode without dragging the heavy registry's transitive", - " * graph into dev/test runs (the registry itself stays behind a dynamic", - " * import — see `ensureBundledRegistryLoaded` in `legacy-pi-compat.ts`).", - " */", - "export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet = new Set([", - ...keyLines, - "]);", - "", - ].join("\n"); -} - -async function formatInPlace(targets: readonly string[]): Promise { - // `biome check --write` runs the formatter AND the assist's organizeImports - // pass; `biome format --write` alone leaves the import order untouched. - const proc = Bun.spawn(["bunx", "biome", "check", "--write", ...targets], { - cwd: packageDir, - stdin: "ignore", - stdout: "pipe", - stderr: "pipe", - }); - // Drain both pipes concurrently with proc.exited to avoid a pipe-buffer - // deadlock — biome check can emit thousands of lines when it rewrites the - // generated registry, easily exceeding the ~64 KiB OS pipe buffer. - const [exit, , stderr] = await Promise.all([ - proc.exited, - new Response(proc.stdout).text(), - new Response(proc.stderr).text(), - ]); - if (exit !== 0) { - throw new Error(`biome check --write failed (exit ${exit}): ${stderr}`); - } -} - -async function main(): Promise { - const args = process.argv.slice(2); - const check = args.includes(CHECK_FLAG); - if (!check && !args.includes(GENERATE_FLAG)) { - console.log( - `Skipping bundled-pi registry generation; pass ${GENERATE_FLAG} to write the output files (or ${CHECK_FLAG} to verify the committed copy).`, - ); - return; - } - - const entries = await collectEntries(); - const registrySource = renderRegistry(entries); - const keysSource = renderKeys(entries); - - if (check) { - // biome ignores paths outside its `includes` glob (the `*.ts.candidate` - // suffix above would be rejected with "No files were processed"), so - // write the candidates into a sibling `..tmp/` directory whose - // basenames match the committed copies. The directory lives under the - // same package so biome's repo-relative `includes` still cover it. - const tmpDir = path.join(packageDir, "src/extensibility/plugins/.legacy-pi-bundled-candidates"); - const tmpRegistry = path.join(tmpDir, path.basename(registryOutPath)); - const tmpKeys = path.join(tmpDir, path.basename(keysOutPath)); - try { - await Bun.write(tmpRegistry, registrySource); - await Bun.write(tmpKeys, keysSource); - await formatInPlace([tmpRegistry, tmpKeys]); - const drift: string[] = []; - const pairs: readonly (readonly [string, string])[] = [ - [registryOutPath, tmpRegistry], - [keysOutPath, tmpKeys], - ]; - for (const [committedPath, candidatePath] of pairs) { - let committed: string; - try { - committed = await Bun.file(committedPath).text(); - } catch { - committed = ""; - } - const candidate = await Bun.file(candidatePath).text(); - if (committed !== candidate) { - drift.push(path.relative(repoRoot, committedPath)); - } - } - if (drift.length > 0) { - console.error( - `generate-legacy-pi-bundled-registry: stale output — rerun with ${GENERATE_FLAG}. Files out of sync:\n ${drift.join("\n ")}`, - ); - process.exit(1); - } - console.log("generate-legacy-pi-bundled-registry: OK"); - } finally { - // `fs.rm` recursively handles both files and the parent tmp dir; the - // individual file deletes the previous draft used `Bun.file().delete()` - // for would leave the empty directory behind. - await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => undefined); - } - return; - } - - await Bun.write(registryOutPath, registrySource); - await Bun.write(keysOutPath, keysSource); - // Hand-emitted formatting can't perfectly match biome's organizeImports + - // long-line wrapping (lineWidth 120 + 60+ entries with long keys/bindings), - // so let biome rewrite the files in place. The committed output then matches - // what `bun check` enforces, and `--check` confirms zero drift on CI. - await formatInPlace([registryOutPath, keysOutPath]); - console.log( - `Generated ${path.relative(repoRoot, registryOutPath)} and ${path.relative(repoRoot, keysOutPath)} (${entries.length} entries)`, - ); -} - -await main(); diff --git a/packages/coding-agent/scripts/legacy-pi-virtual-module.ts b/packages/coding-agent/scripts/legacy-pi-virtual-module.ts new file mode 100644 index 000000000..a5a3dcfa3 --- /dev/null +++ b/packages/coding-agent/scripts/legacy-pi-virtual-module.ts @@ -0,0 +1,192 @@ +import * as path from "node:path"; +import { isEnoent } from "@oh-my-pi/pi-utils"; + +/** Build-time specifier resolved to bundled legacy Pi module namespaces. */ +export const LEGACY_PI_MODULES_SPECIFIER = "omp-legacy-pi-modules"; + +const VIRTUAL_NAMESPACE = "omp-legacy-pi-modules-build"; +const packageDir = path.resolve(import.meta.dir, ".."); +const repoRoot = path.resolve(packageDir, "..", ".."); + +interface BundledPackage { + readonly dir: string; + readonly identifier: string; + readonly rootShim: string | null; +} + +const BUNDLED_PACKAGES: readonly BundledPackage[] = [ + { dir: "agent", identifier: "PiAgentCore", rootShim: null }, + { dir: "ai", identifier: "PiAi", rootShim: "legacy-pi-ai-shim.ts" }, + { dir: "coding-agent", identifier: "PiCodingAgent", rootShim: "legacy-pi-coding-agent-shim.ts" }, + { dir: "natives", identifier: "PiNatives", rootShim: null }, + { dir: "tui", identifier: "PiTui", rootShim: null }, + { dir: "utils", identifier: "PiUtils", rootShim: null }, +]; + +const TYPEBOX_MODULE_KEY = "typebox"; +const TYPEBOX_SHIM = "typebox.ts"; +const SKIPPED_WILDCARD_BASENAMES = new Set(["index"]); +const MAIN_THREAD_UNSAFE_WILDCARD_BASENAMES = new Set(["worker-entry"]); + +/** One namespace module the binary must retain for legacy extension imports. */ +export interface BundledPiEntry { + /** Canonical import key exposed to extensions. */ + readonly key: string; + /** Unique identifier used by the virtual module's generated import. */ + readonly binding: string; + /** Package or absolute source specifier compiled into the binary. */ + readonly importSpecifier: string; +} + +interface WildcardPattern { + readonly exportPrefix: string; + readonly exportSuffix: string; + readonly sourcePrefix: string; + readonly sourceSuffix: string; +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function bindingForSubpath(identifier: string, subpath: string): string { + const segments = subpath + .split("/") + .filter(Boolean) + .map(segment => + segment + .split(/[-_]/) + .filter(Boolean) + .map(part => part.charAt(0).toUpperCase() + part.slice(1)) + .join(""), + ); + return `bundled${identifier}${segments.join("")}`; +} + +function isSafeWildcardBasename(basename: string): boolean { + if (!basename || basename.startsWith(".") || basename.startsWith("_")) return false; + if (SKIPPED_WILDCARD_BASENAMES.has(basename)) return false; + if (MAIN_THREAD_UNSAFE_WILDCARD_BASENAMES.has(basename)) return false; + return !/\.(test|spec|d|generated|bench)$/.test(basename); +} + +function parseWildcardPattern(exportKey: string, sourcePattern: string): WildcardPattern | null { + const exportStar = exportKey.indexOf("*"); + const sourceStar = sourcePattern.indexOf("*"); + if (exportStar === -1 || sourceStar === -1) return null; + if (exportKey.indexOf("*", exportStar + 1) !== -1) return null; + if (sourcePattern.indexOf("*", sourceStar + 1) !== -1) return null; + if (!sourcePattern.startsWith("./")) return null; + return { + exportPrefix: exportKey.slice(2, exportStar), + exportSuffix: exportKey.slice(exportStar + 1), + sourcePrefix: sourcePattern.slice(2, sourceStar), + sourceSuffix: sourcePattern.slice(sourceStar + 1), + }; +} + +function exportImportTarget(value: unknown): string | null { + if (typeof value === "string") return value; + if (isRecord(value) && typeof value.import === "string") return value.import; + return null; +} + +function shimSpecifier(file: string): string { + return path.join(packageDir, "src", "extensibility", file); +} + +/** + * Derive the bundled legacy Pi module surface from current package exports. + * Named wildcard exports are expanded from source; root catch-alls stay out to + * avoid importing CLI entrypoints and other non-extension surfaces. + */ +export async function collectBundledPiEntries(): Promise { + const entries: BundledPiEntry[] = []; + const seenKeys = new Set(); + const seenBindings = new Set(); + function addEntry(key: string, binding: string, importSpecifier: string): void { + if (seenKeys.has(key)) return; + if (seenBindings.has(binding)) { + throw new Error(`Duplicate bundled Pi binding ${binding} for ${key}`); + } + seenKeys.add(key); + seenBindings.add(binding); + entries.push({ key, binding, importSpecifier }); + } + + for (const pkg of BUNDLED_PACKAGES) { + const packageRoot = path.join(repoRoot, "packages", pkg.dir); + const manifestPath = path.join(packageRoot, "package.json"); + const manifest: unknown = await Bun.file(manifestPath).json(); + if (!isRecord(manifest) || typeof manifest.name !== "string") { + throw new Error(`Bundled Pi package manifest has no name: ${manifestPath}`); + } + const exportsField = isRecord(manifest.exports) ? manifest.exports : {}; + const rootSpecifier = pkg.rootShim ? shimSpecifier(pkg.rootShim) : manifest.name; + addEntry(manifest.name, `bundled${pkg.identifier}`, rootSpecifier); + + for (const exportKey in exportsField) { + if (!exportKey.startsWith("./") || exportKey === "." || exportKey.includes("*")) continue; + const subpath = exportKey.slice(2); + const key = `${manifest.name}/${subpath}`; + addEntry(key, bindingForSubpath(pkg.identifier, subpath), key); + } + + for (const exportKey in exportsField) { + if (!exportKey.startsWith("./") || exportKey === "." || !exportKey.includes("*")) continue; + const sourcePattern = exportImportTarget(exportsField[exportKey]); + if (!sourcePattern) continue; + const pattern = parseWildcardPattern(exportKey, sourcePattern); + if (!pattern || !/\.(ts|tsx|mts|cts|js|mjs|cjs|jsx)$/.test(pattern.sourceSuffix)) continue; + if (pattern.exportPrefix === "" || pattern.exportPrefix === "/") continue; + + const sourceDir = path.join(packageRoot, pattern.sourcePrefix); + try { + const glob = new Bun.Glob(`*${pattern.sourceSuffix}`); + const matches: string[] = []; + for await (const match of glob.scan({ cwd: sourceDir, onlyFiles: true })) { + matches.push(match); + } + matches.sort(); + for (const match of matches) { + if (!match.endsWith(pattern.sourceSuffix)) continue; + const basename = match.slice(0, match.length - pattern.sourceSuffix.length); + if (!isSafeWildcardBasename(basename) || basename.includes("/")) continue; + const subpath = `${pattern.exportPrefix}${basename}${pattern.exportSuffix}`; + const key = `${manifest.name}/${subpath}`; + addEntry(key, bindingForSubpath(pkg.identifier, subpath), key); + } + } catch (error) { + if (!isEnoent(error)) throw error; + } + } + } + + addEntry(TYPEBOX_MODULE_KEY, "bundledTypeBoxShim", shimSpecifier(TYPEBOX_SHIM)); + return entries; +} + +function renderVirtualModule(entries: readonly BundledPiEntry[]): string { + const imports = entries.map(entry => `import * as ${entry.binding} from ${JSON.stringify(entry.importSpecifier)};`); + const modules = entries.map(entry => `\t${JSON.stringify(entry.key)}: ${entry.binding},`); + return [...imports, "", "export const BUNDLED_PI_MODULES = {", ...modules, "};", ""].join("\n"); +} + +/** + * Build plugin that materializes the legacy Pi module graph entirely in + * memory. Bun still needs static import edges at compile time, but no generated + * source or key-list file is written to the repository. + */ +export async function createLegacyPiVirtualModulePlugin(): Promise { + const source = renderVirtualModule(await collectBundledPiEntries()); + return { + name: "omp:legacy-pi-modules", + setup(build) { + build.onResolve({ filter: /^omp-legacy-pi-modules$/ }, () => ({ + path: LEGACY_PI_MODULES_SPECIFIER, + namespace: VIRTUAL_NAMESPACE, + })); + build.onLoad({ filter: /.*/, namespace: VIRTUAL_NAMESPACE }, () => ({ contents: source, loader: "ts" })); + }, + }; +} diff --git a/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-keys.ts b/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-keys.ts deleted file mode 100644 index 3a588a9cb..000000000 --- a/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-keys.ts +++ /dev/null @@ -1,1011 +0,0 @@ -// AUTO-GENERATED by scripts/generate-legacy-pi-bundled-registry.ts. -// Do not edit by hand — run `bun scripts/generate-legacy-pi-bundled-registry.ts --generate`. -/** - * Canonical keys served by the `omp-legacy-pi-bundled:` virtual namespace. - * Mirrors `Object.keys(BUNDLED_PI_REGISTRY)` from - * `legacy-pi-bundled-keys.ts`'s sibling registry file. `legacy-pi-compat.ts` - * statically imports this set to seed `LEGACY_PI_PACKAGE_ROOT_OVERRIDES` in - * compiled-binary mode without dragging the heavy registry's transitive - * graph into dev/test runs (the registry itself stays behind a dynamic - * import — see `ensureBundledRegistryLoaded` in `legacy-pi-compat.ts`). - */ -export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet = new Set([ - "@oh-my-pi/pi-agent-core", - "@oh-my-pi/pi-agent-core/compaction", - "@oh-my-pi/pi-agent-core/compaction/branch-summarization", - "@oh-my-pi/pi-agent-core/compaction/compaction", - "@oh-my-pi/pi-agent-core/compaction/entries", - "@oh-my-pi/pi-agent-core/compaction/errors", - "@oh-my-pi/pi-agent-core/compaction/messages", - "@oh-my-pi/pi-agent-core/compaction/openai", - "@oh-my-pi/pi-agent-core/compaction/pruning", - "@oh-my-pi/pi-agent-core/compaction/shake", - "@oh-my-pi/pi-agent-core/compaction/tool-protection", - "@oh-my-pi/pi-agent-core/compaction/utils", - "@oh-my-pi/pi-ai", - "@oh-my-pi/pi-ai/error", - "@oh-my-pi/pi-ai/auth-broker", - "@oh-my-pi/pi-ai/auth-gateway", - "@oh-my-pi/pi-ai/utils/harmony-leak", - "@oh-my-pi/pi-ai/dialect", - "@oh-my-pi/pi-ai/oauth", - "@oh-my-pi/pi-ai/registry", - "@oh-my-pi/pi-ai/registry/oauth", - "@oh-my-pi/pi-ai/utils/schema", - "@oh-my-pi/pi-ai/auth-broker/client", - "@oh-my-pi/pi-ai/auth-broker/discover", - "@oh-my-pi/pi-ai/auth-broker/refresher", - "@oh-my-pi/pi-ai/auth-broker/remote-store", - "@oh-my-pi/pi-ai/auth-broker/server", - "@oh-my-pi/pi-ai/auth-broker/snapshot-cache", - "@oh-my-pi/pi-ai/auth-broker/types", - "@oh-my-pi/pi-ai/auth-broker/wire-schemas", - "@oh-my-pi/pi-ai/auth-gateway/http", - "@oh-my-pi/pi-ai/auth-gateway/server", - "@oh-my-pi/pi-ai/auth-gateway/types", - "@oh-my-pi/pi-ai/providers/amazon-bedrock", - "@oh-my-pi/pi-ai/providers/anthropic-client", - "@oh-my-pi/pi-ai/providers/anthropic-messages-server-schema", - "@oh-my-pi/pi-ai/providers/anthropic-messages-server", - "@oh-my-pi/pi-ai/providers/anthropic-wire", - "@oh-my-pi/pi-ai/providers/anthropic", - "@oh-my-pi/pi-ai/providers/aws-credentials", - "@oh-my-pi/pi-ai/providers/aws-eventstream", - "@oh-my-pi/pi-ai/providers/aws-sigv4", - "@oh-my-pi/pi-ai/providers/azure-openai-responses", - "@oh-my-pi/pi-ai/providers/cursor", - "@oh-my-pi/pi-ai/providers/devin", - "@oh-my-pi/pi-ai/providers/error-message", - "@oh-my-pi/pi-ai/providers/github-copilot-headers", - "@oh-my-pi/pi-ai/providers/gitlab-duo-workflow", - "@oh-my-pi/pi-ai/providers/gitlab-duo", - "@oh-my-pi/pi-ai/providers/google-auth", - "@oh-my-pi/pi-ai/providers/google-gemini-cli", - "@oh-my-pi/pi-ai/providers/google-shared", - "@oh-my-pi/pi-ai/providers/google-types", - "@oh-my-pi/pi-ai/providers/google-vertex", - "@oh-my-pi/pi-ai/providers/google", - "@oh-my-pi/pi-ai/providers/grammar", - "@oh-my-pi/pi-ai/providers/kimi", - "@oh-my-pi/pi-ai/providers/mock", - "@oh-my-pi/pi-ai/providers/ollama", - "@oh-my-pi/pi-ai/providers/openai-anthropic-shim", - "@oh-my-pi/pi-ai/providers/openai-chat-server-schema", - "@oh-my-pi/pi-ai/providers/openai-chat-server", - "@oh-my-pi/pi-ai/providers/openai-chat-wire", - "@oh-my-pi/pi-ai/providers/openai-codex-responses", - "@oh-my-pi/pi-ai/providers/openai-completions", - "@oh-my-pi/pi-ai/providers/openai-reasoning-fallback", - "@oh-my-pi/pi-ai/providers/openai-responses-server-schema", - "@oh-my-pi/pi-ai/providers/openai-responses-server", - "@oh-my-pi/pi-ai/providers/openai-responses-wire", - "@oh-my-pi/pi-ai/providers/openai-responses", - "@oh-my-pi/pi-ai/providers/openai-shared", - "@oh-my-pi/pi-ai/providers/pi-native-client", - "@oh-my-pi/pi-ai/providers/pi-native-server", - "@oh-my-pi/pi-ai/providers/register-builtins", - "@oh-my-pi/pi-ai/providers/synthetic", - "@oh-my-pi/pi-ai/providers/transform-messages", - "@oh-my-pi/pi-ai/providers/vision-guard", - "@oh-my-pi/pi-ai/providers/openai-codex/request-transformer", - "@oh-my-pi/pi-ai/providers/openai-codex/response-handler", - "@oh-my-pi/pi-ai/usage/claude", - "@oh-my-pi/pi-ai/usage/gemini", - "@oh-my-pi/pi-ai/usage/github-copilot", - "@oh-my-pi/pi-ai/usage/google-antigravity", - "@oh-my-pi/pi-ai/usage/kimi", - "@oh-my-pi/pi-ai/usage/minimax-code", - "@oh-my-pi/pi-ai/usage/ollama", - "@oh-my-pi/pi-ai/usage/openai-codex-base-url", - "@oh-my-pi/pi-ai/usage/openai-codex-reset", - "@oh-my-pi/pi-ai/usage/openai-codex", - "@oh-my-pi/pi-ai/usage/opencode-go", - "@oh-my-pi/pi-ai/usage/shared", - "@oh-my-pi/pi-ai/usage/zai", - "@oh-my-pi/pi-ai/utils/abort", - "@oh-my-pi/pi-ai/utils/anthropic-auth", - "@oh-my-pi/pi-ai/utils/block-symbols", - "@oh-my-pi/pi-ai/utils/deterministic-id", - "@oh-my-pi/pi-ai/utils/empty-completion-retry", - "@oh-my-pi/pi-ai/utils/event-stream", - "@oh-my-pi/pi-ai/utils/foundry", - "@oh-my-pi/pi-ai/utils/google-validation", - "@oh-my-pi/pi-ai/utils/http-inspector", - "@oh-my-pi/pi-ai/utils/idle-iterator", - "@oh-my-pi/pi-ai/utils/openai-http", - "@oh-my-pi/pi-ai/utils/openrouter-headers", - "@oh-my-pi/pi-ai/utils/parse-bind", - "@oh-my-pi/pi-ai/utils/provider-response", - "@oh-my-pi/pi-ai/utils/proxy", - "@oh-my-pi/pi-ai/utils/request-debug", - "@oh-my-pi/pi-ai/utils/retry-after", - "@oh-my-pi/pi-ai/utils/retry", - "@oh-my-pi/pi-ai/utils/sdk-stream-timeout", - "@oh-my-pi/pi-ai/utils/sse-debug", - "@oh-my-pi/pi-ai/utils/stream-markup-healing", - "@oh-my-pi/pi-ai/utils/thinking-loop", - "@oh-my-pi/pi-ai/utils/tool-choice", - "@oh-my-pi/pi-ai/utils/validation", - "@oh-my-pi/pi-ai/oauth/anthropic", - "@oh-my-pi/pi-ai/oauth/callback-server", - "@oh-my-pi/pi-ai/oauth/cursor", - "@oh-my-pi/pi-ai/oauth/devin", - "@oh-my-pi/pi-ai/oauth/github-copilot", - "@oh-my-pi/pi-ai/oauth/gitlab-duo-workflow", - "@oh-my-pi/pi-ai/oauth/gitlab-duo", - "@oh-my-pi/pi-ai/oauth/google-antigravity", - "@oh-my-pi/pi-ai/oauth/google-gemini-cli", - "@oh-my-pi/pi-ai/oauth/google-oauth-shared", - "@oh-my-pi/pi-ai/oauth/kimi", - "@oh-my-pi/pi-ai/oauth/minimax-code", - "@oh-my-pi/pi-ai/oauth/openai-codex", - "@oh-my-pi/pi-ai/oauth/opencode", - "@oh-my-pi/pi-ai/oauth/perplexity", - "@oh-my-pi/pi-ai/oauth/pkce", - "@oh-my-pi/pi-ai/oauth/types", - "@oh-my-pi/pi-ai/oauth/wafer", - "@oh-my-pi/pi-ai/oauth/xai-oauth", - "@oh-my-pi/pi-ai/oauth/xiaomi", - "@oh-my-pi/pi-ai/utils/schema/adapt", - "@oh-my-pi/pi-ai/utils/schema/compatibility", - "@oh-my-pi/pi-ai/utils/schema/dereference", - "@oh-my-pi/pi-ai/utils/schema/draft", - "@oh-my-pi/pi-ai/utils/schema/equality", - "@oh-my-pi/pi-ai/utils/schema/fields", - "@oh-my-pi/pi-ai/utils/schema/json-schema-validator", - "@oh-my-pi/pi-ai/utils/schema/meta-validator", - "@oh-my-pi/pi-ai/utils/schema/normalize", - "@oh-my-pi/pi-ai/utils/schema/spill", - "@oh-my-pi/pi-ai/utils/schema/stamps", - "@oh-my-pi/pi-ai/utils/schema/strict-tool-validation", - "@oh-my-pi/pi-ai/utils/schema/types", - "@oh-my-pi/pi-ai/utils/schema/typescript", - "@oh-my-pi/pi-ai/utils/schema/wire", - "@oh-my-pi/pi-ai/utils/schema/zod-decontaminate", - "@oh-my-pi/pi-coding-agent", - "@oh-my-pi/pi-coding-agent/async", - "@oh-my-pi/pi-coding-agent/autoresearch", - "@oh-my-pi/pi-coding-agent/capability", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures", - "@oh-my-pi/pi-coding-agent/commit", - "@oh-my-pi/pi-coding-agent/commit/agentic", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools", - "@oh-my-pi/pi-coding-agent/commit/analysis", - "@oh-my-pi/pi-coding-agent/commit/changelog", - "@oh-my-pi/pi-coding-agent/commit/map-reduce", - "@oh-my-pi/pi-coding-agent/dap", - "@oh-my-pi/pi-coding-agent/debug", - "@oh-my-pi/pi-coding-agent/discovery", - "@oh-my-pi/pi-coding-agent/edit", - "@oh-my-pi/pi-coding-agent/exa", - "@oh-my-pi/pi-coding-agent/export/html", - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands", - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/ci-green", - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/review", - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools", - "@oh-my-pi/pi-coding-agent/extensibility/extensions", - "@oh-my-pi/pi-coding-agent/extensibility/hooks", - "@oh-my-pi/pi-coding-agent/extensibility/plugins", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace", - "@oh-my-pi/pi-coding-agent/internal-urls", - "@oh-my-pi/pi-coding-agent/eval", - "@oh-my-pi/pi-coding-agent/lsp", - "@oh-my-pi/pi-coding-agent/lsp/clients", - "@oh-my-pi/pi-coding-agent/markit", - "@oh-my-pi/pi-coding-agent/mcp", - "@oh-my-pi/pi-coding-agent/mcp/transports", - "@oh-my-pi/pi-coding-agent/memories", - "@oh-my-pi/pi-coding-agent/memory-backend", - "@oh-my-pi/pi-coding-agent/hindsight", - "@oh-my-pi/pi-coding-agent/modes", - "@oh-my-pi/pi-coding-agent/modes/acp", - "@oh-my-pi/pi-coding-agent/modes/components", - "@oh-my-pi/pi-coding-agent/modes/components/extensions", - "@oh-my-pi/pi-coding-agent/modes/components/status-line", - "@oh-my-pi/pi-coding-agent/modes/setup-wizard", - "@oh-my-pi/pi-coding-agent/modes/theme/defaults", - "@oh-my-pi/pi-coding-agent/secrets", - "@oh-my-pi/pi-coding-agent/stt", - "@oh-my-pi/pi-coding-agent/task", - "@oh-my-pi/pi-coding-agent/tools", - "@oh-my-pi/pi-coding-agent/tui", - "@oh-my-pi/pi-coding-agent/web/scrapers", - "@oh-my-pi/pi-coding-agent/web/search", - "@oh-my-pi/pi-coding-agent/async/job-manager", - "@oh-my-pi/pi-coding-agent/autoresearch/dashboard", - "@oh-my-pi/pi-coding-agent/autoresearch/git", - "@oh-my-pi/pi-coding-agent/autoresearch/helpers", - "@oh-my-pi/pi-coding-agent/autoresearch/state", - "@oh-my-pi/pi-coding-agent/autoresearch/storage", - "@oh-my-pi/pi-coding-agent/autoresearch/types", - "@oh-my-pi/pi-coding-agent/autoresearch/tools/init-experiment", - "@oh-my-pi/pi-coding-agent/autoresearch/tools/log-experiment", - "@oh-my-pi/pi-coding-agent/autoresearch/tools/run-experiment", - "@oh-my-pi/pi-coding-agent/autoresearch/tools/update-notes", - "@oh-my-pi/pi-coding-agent/capability/context-file", - "@oh-my-pi/pi-coding-agent/capability/extension-module", - "@oh-my-pi/pi-coding-agent/capability/extension", - "@oh-my-pi/pi-coding-agent/capability/fs", - "@oh-my-pi/pi-coding-agent/capability/hook", - "@oh-my-pi/pi-coding-agent/capability/instruction", - "@oh-my-pi/pi-coding-agent/capability/mcp", - "@oh-my-pi/pi-coding-agent/capability/prompt", - "@oh-my-pi/pi-coding-agent/capability/rule-buckets", - "@oh-my-pi/pi-coding-agent/capability/rule", - "@oh-my-pi/pi-coding-agent/capability/settings", - "@oh-my-pi/pi-coding-agent/capability/skill", - "@oh-my-pi/pi-coding-agent/capability/slash-command", - "@oh-my-pi/pi-coding-agent/capability/ssh", - "@oh-my-pi/pi-coding-agent/capability/system-prompt", - "@oh-my-pi/pi-coding-agent/capability/tool", - "@oh-my-pi/pi-coding-agent/capability/types", - "@oh-my-pi/pi-coding-agent/cli/agents-cli", - "@oh-my-pi/pi-coding-agent/cli/args", - "@oh-my-pi/pi-coding-agent/cli/auth-broker-cli", - "@oh-my-pi/pi-coding-agent/cli/auth-gateway-cli", - "@oh-my-pi/pi-coding-agent/cli/bench-cli", - "@oh-my-pi/pi-coding-agent/cli/classify-install-target", - "@oh-my-pi/pi-coding-agent/cli/claude-trace-cli", - "@oh-my-pi/pi-coding-agent/cli/completion-gen", - "@oh-my-pi/pi-coding-agent/cli/config-cli", - "@oh-my-pi/pi-coding-agent/cli/dry-balance-cli", - "@oh-my-pi/pi-coding-agent/cli/extension-flags", - "@oh-my-pi/pi-coding-agent/cli/file-processor", - "@oh-my-pi/pi-coding-agent/cli/flag-tables", - "@oh-my-pi/pi-coding-agent/cli/gallery-cli", - "@oh-my-pi/pi-coding-agent/cli/gallery-screenshot", - "@oh-my-pi/pi-coding-agent/cli/gc-cli", - "@oh-my-pi/pi-coding-agent/cli/grep-cli", - "@oh-my-pi/pi-coding-agent/cli/grievances-cli", - "@oh-my-pi/pi-coding-agent/cli/initial-message", - "@oh-my-pi/pi-coding-agent/cli/models-cli", - "@oh-my-pi/pi-coding-agent/cli/plugin-cli", - "@oh-my-pi/pi-coding-agent/cli/profile-alias", - "@oh-my-pi/pi-coding-agent/cli/profile-bootstrap", - "@oh-my-pi/pi-coding-agent/cli/read-cli", - "@oh-my-pi/pi-coding-agent/cli/session-picker", - "@oh-my-pi/pi-coding-agent/cli/setup-cli", - "@oh-my-pi/pi-coding-agent/cli/setup-model-picker", - "@oh-my-pi/pi-coding-agent/cli/shell-cli", - "@oh-my-pi/pi-coding-agent/cli/ssh-cli", - "@oh-my-pi/pi-coding-agent/cli/startup-cwd", - "@oh-my-pi/pi-coding-agent/cli/stats-cli", - "@oh-my-pi/pi-coding-agent/cli/tiny-models-cli", - "@oh-my-pi/pi-coding-agent/cli/ttsr-cli", - "@oh-my-pi/pi-coding-agent/cli/update-cli", - "@oh-my-pi/pi-coding-agent/cli/usage-cli", - "@oh-my-pi/pi-coding-agent/cli/web-search-cli", - "@oh-my-pi/pi-coding-agent/cli/worktree-cli", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/agentic", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/codeintel", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/edit", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/fs", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/interaction", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/memory", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/misc", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/search", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/shell", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/types", - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/web", - "@oh-my-pi/pi-coding-agent/cli/commands/init-xdg", - "@oh-my-pi/pi-coding-agent/commands/acp", - "@oh-my-pi/pi-coding-agent/commands/agents", - "@oh-my-pi/pi-coding-agent/commands/auth-broker", - "@oh-my-pi/pi-coding-agent/commands/auth-gateway", - "@oh-my-pi/pi-coding-agent/commands/bench", - "@oh-my-pi/pi-coding-agent/commands/commit", - "@oh-my-pi/pi-coding-agent/commands/complete", - "@oh-my-pi/pi-coding-agent/commands/completions", - "@oh-my-pi/pi-coding-agent/commands/config", - "@oh-my-pi/pi-coding-agent/commands/dry-balance", - "@oh-my-pi/pi-coding-agent/commands/gallery", - "@oh-my-pi/pi-coding-agent/commands/gc", - "@oh-my-pi/pi-coding-agent/commands/grep", - "@oh-my-pi/pi-coding-agent/commands/grievances", - "@oh-my-pi/pi-coding-agent/commands/install", - "@oh-my-pi/pi-coding-agent/commands/join", - "@oh-my-pi/pi-coding-agent/commands/launch", - "@oh-my-pi/pi-coding-agent/commands/models", - "@oh-my-pi/pi-coding-agent/commands/plugin", - "@oh-my-pi/pi-coding-agent/commands/read", - "@oh-my-pi/pi-coding-agent/commands/say", - "@oh-my-pi/pi-coding-agent/commands/setup", - "@oh-my-pi/pi-coding-agent/commands/shell", - "@oh-my-pi/pi-coding-agent/commands/ssh", - "@oh-my-pi/pi-coding-agent/commands/stats", - "@oh-my-pi/pi-coding-agent/commands/tiny-models", - "@oh-my-pi/pi-coding-agent/commands/token", - "@oh-my-pi/pi-coding-agent/commands/ttsr", - "@oh-my-pi/pi-coding-agent/commands/update", - "@oh-my-pi/pi-coding-agent/commands/usage", - "@oh-my-pi/pi-coding-agent/commands/web-search", - "@oh-my-pi/pi-coding-agent/commands/worktree", - "@oh-my-pi/pi-coding-agent/commit/cli", - "@oh-my-pi/pi-coding-agent/commit/message", - "@oh-my-pi/pi-coding-agent/commit/model-selection", - "@oh-my-pi/pi-coding-agent/commit/pipeline", - "@oh-my-pi/pi-coding-agent/commit/shared-llm", - "@oh-my-pi/pi-coding-agent/commit/types", - "@oh-my-pi/pi-coding-agent/commit/utils", - "@oh-my-pi/pi-coding-agent/commit/agentic/agent", - "@oh-my-pi/pi-coding-agent/commit/agentic/fallback", - "@oh-my-pi/pi-coding-agent/commit/agentic/state", - "@oh-my-pi/pi-coding-agent/commit/agentic/topo-sort", - "@oh-my-pi/pi-coding-agent/commit/agentic/trivial", - "@oh-my-pi/pi-coding-agent/commit/agentic/validation", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/analyze-file", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-file-diff", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-hunk", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-overview", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-changelog", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-commit", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/recent-commits", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/schemas", - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/split-commit", - "@oh-my-pi/pi-coding-agent/commit/analysis/conventional", - "@oh-my-pi/pi-coding-agent/commit/analysis/scope", - "@oh-my-pi/pi-coding-agent/commit/analysis/summary", - "@oh-my-pi/pi-coding-agent/commit/analysis/validation", - "@oh-my-pi/pi-coding-agent/commit/changelog/detect", - "@oh-my-pi/pi-coding-agent/commit/changelog/generate", - "@oh-my-pi/pi-coding-agent/commit/changelog/parse", - "@oh-my-pi/pi-coding-agent/commit/git/diff", - "@oh-my-pi/pi-coding-agent/commit/map-reduce/map-phase", - "@oh-my-pi/pi-coding-agent/commit/map-reduce/reduce-phase", - "@oh-my-pi/pi-coding-agent/commit/map-reduce/utils", - "@oh-my-pi/pi-coding-agent/commit/utils/exclusions", - "@oh-my-pi/pi-coding-agent/config/api-key-resolver", - "@oh-my-pi/pi-coding-agent/config/append-only-context-mode", - "@oh-my-pi/pi-coding-agent/config/config-file", - "@oh-my-pi/pi-coding-agent/config/file-lock", - "@oh-my-pi/pi-coding-agent/config/inline-tool-descriptors-mode", - "@oh-my-pi/pi-coding-agent/config/keybindings", - "@oh-my-pi/pi-coding-agent/config/model-discovery", - "@oh-my-pi/pi-coding-agent/config/model-registry", - "@oh-my-pi/pi-coding-agent/config/model-resolver", - "@oh-my-pi/pi-coding-agent/config/model-roles", - "@oh-my-pi/pi-coding-agent/config/models-config-schema", - "@oh-my-pi/pi-coding-agent/config/models-config", - "@oh-my-pi/pi-coding-agent/config/prompt-templates", - "@oh-my-pi/pi-coding-agent/config/resolve-config-value", - "@oh-my-pi/pi-coding-agent/config/service-tier", - "@oh-my-pi/pi-coding-agent/config/settings-schema", - "@oh-my-pi/pi-coding-agent/config/settings", - "@oh-my-pi/pi-coding-agent/dap/client", - "@oh-my-pi/pi-coding-agent/dap/config", - "@oh-my-pi/pi-coding-agent/dap/session", - "@oh-my-pi/pi-coding-agent/dap/types", - "@oh-my-pi/pi-coding-agent/debug/log-formatting", - "@oh-my-pi/pi-coding-agent/debug/log-viewer", - "@oh-my-pi/pi-coding-agent/debug/profiler", - "@oh-my-pi/pi-coding-agent/debug/protocol-probe", - "@oh-my-pi/pi-coding-agent/debug/raw-sse-buffer", - "@oh-my-pi/pi-coding-agent/debug/raw-sse", - "@oh-my-pi/pi-coding-agent/debug/remote-debugger", - "@oh-my-pi/pi-coding-agent/debug/report-bundle", - "@oh-my-pi/pi-coding-agent/debug/system-info", - "@oh-my-pi/pi-coding-agent/debug/terminal-info", - "@oh-my-pi/pi-coding-agent/discovery/agents-md", - "@oh-my-pi/pi-coding-agent/discovery/agents", - "@oh-my-pi/pi-coding-agent/discovery/at-imports", - "@oh-my-pi/pi-coding-agent/discovery/builtin-defaults", - "@oh-my-pi/pi-coding-agent/discovery/builtin", - "@oh-my-pi/pi-coding-agent/discovery/claude-plugins", - "@oh-my-pi/pi-coding-agent/discovery/claude", - "@oh-my-pi/pi-coding-agent/discovery/cline", - "@oh-my-pi/pi-coding-agent/discovery/codex", - "@oh-my-pi/pi-coding-agent/discovery/cursor", - "@oh-my-pi/pi-coding-agent/discovery/gemini", - "@oh-my-pi/pi-coding-agent/discovery/github", - "@oh-my-pi/pi-coding-agent/discovery/helpers", - "@oh-my-pi/pi-coding-agent/discovery/mcp-json", - "@oh-my-pi/pi-coding-agent/discovery/omp-extension-roots", - "@oh-my-pi/pi-coding-agent/discovery/omp-plugins", - "@oh-my-pi/pi-coding-agent/discovery/opencode", - "@oh-my-pi/pi-coding-agent/discovery/plugin-dir-roots", - "@oh-my-pi/pi-coding-agent/discovery/ssh", - "@oh-my-pi/pi-coding-agent/discovery/substitute-plugin-root", - "@oh-my-pi/pi-coding-agent/discovery/vscode", - "@oh-my-pi/pi-coding-agent/discovery/windsurf", - "@oh-my-pi/pi-coding-agent/edit/diff", - "@oh-my-pi/pi-coding-agent/edit/file-snapshot-store", - "@oh-my-pi/pi-coding-agent/edit/normalize", - "@oh-my-pi/pi-coding-agent/edit/notebook", - "@oh-my-pi/pi-coding-agent/edit/read-file", - "@oh-my-pi/pi-coding-agent/edit/renderer", - "@oh-my-pi/pi-coding-agent/edit/streaming", - "@oh-my-pi/pi-coding-agent/edit/modes/apply-patch", - "@oh-my-pi/pi-coding-agent/edit/modes/patch", - "@oh-my-pi/pi-coding-agent/edit/modes/replace", - "@oh-my-pi/pi-coding-agent/exa/mcp-client", - "@oh-my-pi/pi-coding-agent/exa/types", - "@oh-my-pi/pi-coding-agent/exec/bash-executor", - "@oh-my-pi/pi-coding-agent/exec/exec", - "@oh-my-pi/pi-coding-agent/exec/non-interactive-env", - "@oh-my-pi/pi-coding-agent/export/custom-share", - "@oh-my-pi/pi-coding-agent/export/share", - "@oh-my-pi/pi-coding-agent/export/ttsr", - "@oh-my-pi/pi-coding-agent/export/html/web-palette", - "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-ai-shim", - "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-coding-agent-shim", - "@oh-my-pi/pi-coding-agent/extensibility/session-handler-types", - "@oh-my-pi/pi-coding-agent/extensibility/shared-events", - "@oh-my-pi/pi-coding-agent/extensibility/skills", - "@oh-my-pi/pi-coding-agent/extensibility/slash-commands", - "@oh-my-pi/pi-coding-agent/extensibility/tool-event-input", - "@oh-my-pi/pi-coding-agent/extensibility/tool-proxy", - "@oh-my-pi/pi-coding-agent/extensibility/typebox", - "@oh-my-pi/pi-coding-agent/extensibility/utils", - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/loader", - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/types", - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/loader", - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/types", - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/wrapper", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/compact-handler", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/get-commands-handler", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/loader", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/model-api", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/runner", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/types", - "@oh-my-pi/pi-coding-agent/extensibility/extensions/wrapper", - "@oh-my-pi/pi-coding-agent/extensibility/hooks/loader", - "@oh-my-pi/pi-coding-agent/extensibility/hooks/runner", - "@oh-my-pi/pi-coding-agent/extensibility/hooks/tool-wrapper", - "@oh-my-pi/pi-coding-agent/extensibility/hooks/types", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/doctor", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/git-url", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/installer", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-keys", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-registry", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-compat", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/loader", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/manager", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace-auto-update", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/parser", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/runtime-config", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/types", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/cache", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/fetcher", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/manager", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/registry", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/source-resolver", - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/types", - "@oh-my-pi/pi-coding-agent/internal-urls/agent-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/artifact-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/docs-index", - "@oh-my-pi/pi-coding-agent/internal-urls/filesystem-resource", - "@oh-my-pi/pi-coding-agent/internal-urls/history-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/issue-pr-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/json-query", - "@oh-my-pi/pi-coding-agent/internal-urls/local-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/mcp-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/memory-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/omp-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/parse", - "@oh-my-pi/pi-coding-agent/internal-urls/registry-helpers", - "@oh-my-pi/pi-coding-agent/internal-urls/router", - "@oh-my-pi/pi-coding-agent/internal-urls/rule-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/skill-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/ssh-protocol", - "@oh-my-pi/pi-coding-agent/internal-urls/types", - "@oh-my-pi/pi-coding-agent/internal-urls/vault-protocol", - "@oh-my-pi/pi-coding-agent/eval/js/context-manager", - "@oh-my-pi/pi-coding-agent/eval/js/executor", - "@oh-my-pi/pi-coding-agent/eval/js/tool-bridge", - "@oh-my-pi/pi-coding-agent/eval/js/worker-core", - "@oh-my-pi/pi-coding-agent/eval/js/worker-protocol", - "@oh-my-pi/pi-coding-agent/eval/py/display", - "@oh-my-pi/pi-coding-agent/eval/py/executor", - "@oh-my-pi/pi-coding-agent/eval/py/kernel", - "@oh-my-pi/pi-coding-agent/eval/py/prelude", - "@oh-my-pi/pi-coding-agent/eval/py/runtime", - "@oh-my-pi/pi-coding-agent/eval/py/spawn-options", - "@oh-my-pi/pi-coding-agent/eval/py/tool-bridge", - "@oh-my-pi/pi-coding-agent/lsp/client", - "@oh-my-pi/pi-coding-agent/lsp/config", - "@oh-my-pi/pi-coding-agent/lsp/diagnostics-ledger", - "@oh-my-pi/pi-coding-agent/lsp/edits", - "@oh-my-pi/pi-coding-agent/lsp/format-options", - "@oh-my-pi/pi-coding-agent/lsp/lspmux", - "@oh-my-pi/pi-coding-agent/lsp/render", - "@oh-my-pi/pi-coding-agent/lsp/startup-events", - "@oh-my-pi/pi-coding-agent/lsp/types", - "@oh-my-pi/pi-coding-agent/lsp/utils", - "@oh-my-pi/pi-coding-agent/lsp/clients/biome-client", - "@oh-my-pi/pi-coding-agent/lsp/clients/lsp-linter-client", - "@oh-my-pi/pi-coding-agent/lsp/clients/swiftlint-client", - "@oh-my-pi/pi-coding-agent/markit/registry", - "@oh-my-pi/pi-coding-agent/markit/types", - "@oh-my-pi/pi-coding-agent/mcp/client", - "@oh-my-pi/pi-coding-agent/mcp/config-writer", - "@oh-my-pi/pi-coding-agent/mcp/config", - "@oh-my-pi/pi-coding-agent/mcp/json-rpc", - "@oh-my-pi/pi-coding-agent/mcp/loader", - "@oh-my-pi/pi-coding-agent/mcp/manager", - "@oh-my-pi/pi-coding-agent/mcp/oauth-credentials", - "@oh-my-pi/pi-coding-agent/mcp/oauth-discovery", - "@oh-my-pi/pi-coding-agent/mcp/oauth-flow", - "@oh-my-pi/pi-coding-agent/mcp/render", - "@oh-my-pi/pi-coding-agent/mcp/smithery-auth", - "@oh-my-pi/pi-coding-agent/mcp/smithery-connect", - "@oh-my-pi/pi-coding-agent/mcp/smithery-registry", - "@oh-my-pi/pi-coding-agent/mcp/startup-events", - "@oh-my-pi/pi-coding-agent/mcp/timeout", - "@oh-my-pi/pi-coding-agent/mcp/tool-bridge", - "@oh-my-pi/pi-coding-agent/mcp/tool-cache", - "@oh-my-pi/pi-coding-agent/mcp/types", - "@oh-my-pi/pi-coding-agent/mcp/transports/http", - "@oh-my-pi/pi-coding-agent/mcp/transports/stdio", - "@oh-my-pi/pi-coding-agent/memories/storage", - "@oh-my-pi/pi-coding-agent/memory-backend/local-backend", - "@oh-my-pi/pi-coding-agent/memory-backend/off-backend", - "@oh-my-pi/pi-coding-agent/memory-backend/resolve", - "@oh-my-pi/pi-coding-agent/memory-backend/runtime", - "@oh-my-pi/pi-coding-agent/memory-backend/types", - "@oh-my-pi/pi-coding-agent/hindsight/backend", - "@oh-my-pi/pi-coding-agent/hindsight/bank", - "@oh-my-pi/pi-coding-agent/hindsight/client", - "@oh-my-pi/pi-coding-agent/hindsight/config", - "@oh-my-pi/pi-coding-agent/hindsight/content", - "@oh-my-pi/pi-coding-agent/hindsight/mental-models", - "@oh-my-pi/pi-coding-agent/hindsight/state", - "@oh-my-pi/pi-coding-agent/hindsight/transcript", - "@oh-my-pi/pi-coding-agent/modes/emoji-autocomplete", - "@oh-my-pi/pi-coding-agent/modes/gradient-highlight", - "@oh-my-pi/pi-coding-agent/modes/image-references", - "@oh-my-pi/pi-coding-agent/modes/interactive-mode", - "@oh-my-pi/pi-coding-agent/modes/internal-url-autocomplete", - "@oh-my-pi/pi-coding-agent/modes/loop-limit", - "@oh-my-pi/pi-coding-agent/modes/magic-keywords", - "@oh-my-pi/pi-coding-agent/modes/markdown-prose", - "@oh-my-pi/pi-coding-agent/modes/oauth-manual-input", - "@oh-my-pi/pi-coding-agent/modes/orchestrate", - "@oh-my-pi/pi-coding-agent/modes/print-mode", - "@oh-my-pi/pi-coding-agent/modes/prompt-action-autocomplete", - "@oh-my-pi/pi-coding-agent/modes/running-subagent-badge", - "@oh-my-pi/pi-coding-agent/modes/runtime-init", - "@oh-my-pi/pi-coding-agent/modes/session-observer-registry", - "@oh-my-pi/pi-coding-agent/modes/setup-version", - "@oh-my-pi/pi-coding-agent/modes/shared", - "@oh-my-pi/pi-coding-agent/modes/turn-budget", - "@oh-my-pi/pi-coding-agent/modes/types", - "@oh-my-pi/pi-coding-agent/modes/ultrathink", - "@oh-my-pi/pi-coding-agent/modes/workflow", - "@oh-my-pi/pi-coding-agent/modes/acp/acp-agent", - "@oh-my-pi/pi-coding-agent/modes/acp/acp-client-bridge", - "@oh-my-pi/pi-coding-agent/modes/acp/acp-event-mapper", - "@oh-my-pi/pi-coding-agent/modes/acp/acp-mode", - "@oh-my-pi/pi-coding-agent/modes/acp/terminal-auth", - "@oh-my-pi/pi-coding-agent/modes/components/advisor-message", - "@oh-my-pi/pi-coding-agent/modes/components/agent-dashboard", - "@oh-my-pi/pi-coding-agent/modes/components/agent-hub", - "@oh-my-pi/pi-coding-agent/modes/components/agent-transcript-viewer", - "@oh-my-pi/pi-coding-agent/modes/components/assistant-message", - "@oh-my-pi/pi-coding-agent/modes/components/background-tan-message", - "@oh-my-pi/pi-coding-agent/modes/components/bash-execution", - "@oh-my-pi/pi-coding-agent/modes/components/bordered-loader", - "@oh-my-pi/pi-coding-agent/modes/components/btw-panel", - "@oh-my-pi/pi-coding-agent/modes/components/cache-invalidation-marker", - "@oh-my-pi/pi-coding-agent/modes/components/chat-block", - "@oh-my-pi/pi-coding-agent/modes/components/chat-transcript-builder", - "@oh-my-pi/pi-coding-agent/modes/components/collab-prompt-message", - "@oh-my-pi/pi-coding-agent/modes/components/compaction-summary-message", - "@oh-my-pi/pi-coding-agent/modes/components/copy-selector", - "@oh-my-pi/pi-coding-agent/modes/components/countdown-timer", - "@oh-my-pi/pi-coding-agent/modes/components/custom-editor", - "@oh-my-pi/pi-coding-agent/modes/components/custom-message", - "@oh-my-pi/pi-coding-agent/modes/components/diff", - "@oh-my-pi/pi-coding-agent/modes/components/dynamic-border", - "@oh-my-pi/pi-coding-agent/modes/components/error-banner", - "@oh-my-pi/pi-coding-agent/modes/components/eval-execution", - "@oh-my-pi/pi-coding-agent/modes/components/execution-shared", - "@oh-my-pi/pi-coding-agent/modes/components/footer", - "@oh-my-pi/pi-coding-agent/modes/components/history-search", - "@oh-my-pi/pi-coding-agent/modes/components/hook-editor", - "@oh-my-pi/pi-coding-agent/modes/components/hook-input", - "@oh-my-pi/pi-coding-agent/modes/components/hook-message", - "@oh-my-pi/pi-coding-agent/modes/components/hook-selector", - "@oh-my-pi/pi-coding-agent/modes/components/keybinding-hints", - "@oh-my-pi/pi-coding-agent/modes/components/late-diagnostics-message", - "@oh-my-pi/pi-coding-agent/modes/components/login-dialog", - "@oh-my-pi/pi-coding-agent/modes/components/logout-account-selector", - "@oh-my-pi/pi-coding-agent/modes/components/mcp-add-wizard", - "@oh-my-pi/pi-coding-agent/modes/components/message-frame", - "@oh-my-pi/pi-coding-agent/modes/components/model-selector", - "@oh-my-pi/pi-coding-agent/modes/components/move-overlay", - "@oh-my-pi/pi-coding-agent/modes/components/oauth-selector", - "@oh-my-pi/pi-coding-agent/modes/components/omfg-panel", - "@oh-my-pi/pi-coding-agent/modes/components/overlay-box", - "@oh-my-pi/pi-coding-agent/modes/components/plan-review-overlay", - "@oh-my-pi/pi-coding-agent/modes/components/plan-toc", - "@oh-my-pi/pi-coding-agent/modes/components/plugin-selector", - "@oh-my-pi/pi-coding-agent/modes/components/plugin-settings", - "@oh-my-pi/pi-coding-agent/modes/components/queue-mode-selector", - "@oh-my-pi/pi-coding-agent/modes/components/read-tool-group", - "@oh-my-pi/pi-coding-agent/modes/components/reset-usage-selector", - "@oh-my-pi/pi-coding-agent/modes/components/segment-track", - "@oh-my-pi/pi-coding-agent/modes/components/select-list-mouse-routing", - "@oh-my-pi/pi-coding-agent/modes/components/selector-helpers", - "@oh-my-pi/pi-coding-agent/modes/components/session-selector", - "@oh-my-pi/pi-coding-agent/modes/components/settings-defs", - "@oh-my-pi/pi-coding-agent/modes/components/settings-selector", - "@oh-my-pi/pi-coding-agent/modes/components/show-images-selector", - "@oh-my-pi/pi-coding-agent/modes/components/skill-message", - "@oh-my-pi/pi-coding-agent/modes/components/snapcompact-shape-preview", - "@oh-my-pi/pi-coding-agent/modes/components/theme-selector", - "@oh-my-pi/pi-coding-agent/modes/components/thinking-selector", - "@oh-my-pi/pi-coding-agent/modes/components/tiny-title-download-progress", - "@oh-my-pi/pi-coding-agent/modes/components/todo-reminder", - "@oh-my-pi/pi-coding-agent/modes/components/tool-execution", - "@oh-my-pi/pi-coding-agent/modes/components/transcript-container", - "@oh-my-pi/pi-coding-agent/modes/components/tree-selector", - "@oh-my-pi/pi-coding-agent/modes/components/ttsr-notification", - "@oh-my-pi/pi-coding-agent/modes/components/usage-row", - "@oh-my-pi/pi-coding-agent/modes/components/user-message-selector", - "@oh-my-pi/pi-coding-agent/modes/components/user-message", - "@oh-my-pi/pi-coding-agent/modes/components/visual-truncate", - "@oh-my-pi/pi-coding-agent/modes/components/welcome", - "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-dashboard", - "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-list", - "@oh-my-pi/pi-coding-agent/modes/components/extensions/inspector-panel", - "@oh-my-pi/pi-coding-agent/modes/components/extensions/state-manager", - "@oh-my-pi/pi-coding-agent/modes/components/extensions/types", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/component", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/context-thresholds", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/git-utils", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/presets", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/segments", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/separators", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/token-rate", - "@oh-my-pi/pi-coding-agent/modes/components/status-line/types", - "@oh-my-pi/pi-coding-agent/modes/controllers/btw-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller-shared", - "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/event-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/extension-ui-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/input-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/mcp-command-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-rule", - "@oh-my-pi/pi-coding-agent/modes/controllers/selector-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/session-focus-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/ssh-command-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/streaming-reveal", - "@oh-my-pi/pi-coding-agent/modes/controllers/tan-command-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/todo-command-controller", - "@oh-my-pi/pi-coding-agent/modes/controllers/tool-args-reveal", - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/lazy", - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/startup-splash", - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/wizard-overlay", - "@oh-my-pi/pi-coding-agent/modes/rpc/host-tools", - "@oh-my-pi/pi-coding-agent/modes/rpc/host-uris", - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-client", - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-mode", - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-subagents", - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-types", - "@oh-my-pi/pi-coding-agent/modes/theme/mermaid-cache", - "@oh-my-pi/pi-coding-agent/modes/theme/shimmer", - "@oh-my-pi/pi-coding-agent/modes/theme/theme", - "@oh-my-pi/pi-coding-agent/modes/utils/context-usage", - "@oh-my-pi/pi-coding-agent/modes/utils/copy-targets", - "@oh-my-pi/pi-coding-agent/modes/utils/hotkeys-markdown", - "@oh-my-pi/pi-coding-agent/modes/utils/interactive-context-helpers", - "@oh-my-pi/pi-coding-agent/modes/utils/keybinding-matchers", - "@oh-my-pi/pi-coding-agent/modes/utils/tools-markdown", - "@oh-my-pi/pi-coding-agent/modes/utils/transcript-render-helpers", - "@oh-my-pi/pi-coding-agent/modes/utils/ui-helpers", - "@oh-my-pi/pi-coding-agent/plan-mode/approved-plan", - "@oh-my-pi/pi-coding-agent/plan-mode/plan-handoff", - "@oh-my-pi/pi-coding-agent/plan-mode/plan-protection", - "@oh-my-pi/pi-coding-agent/plan-mode/state", - "@oh-my-pi/pi-coding-agent/secrets/obfuscator", - "@oh-my-pi/pi-coding-agent/secrets/regex", - "@oh-my-pi/pi-coding-agent/session/agent-session", - "@oh-my-pi/pi-coding-agent/session/agent-storage", - "@oh-my-pi/pi-coding-agent/session/artifacts", - "@oh-my-pi/pi-coding-agent/session/auth-broker-config", - "@oh-my-pi/pi-coding-agent/session/auth-storage", - "@oh-my-pi/pi-coding-agent/session/blob-store", - "@oh-my-pi/pi-coding-agent/session/client-bridge", - "@oh-my-pi/pi-coding-agent/session/codex-auto-reset", - "@oh-my-pi/pi-coding-agent/session/compact-modes", - "@oh-my-pi/pi-coding-agent/session/history-storage", - "@oh-my-pi/pi-coding-agent/session/indexed-session-storage", - "@oh-my-pi/pi-coding-agent/session/messages", - "@oh-my-pi/pi-coding-agent/session/provider-image-budget", - "@oh-my-pi/pi-coding-agent/session/redis-session-storage", - "@oh-my-pi/pi-coding-agent/session/session-context", - "@oh-my-pi/pi-coding-agent/session/session-dump-format", - "@oh-my-pi/pi-coding-agent/session/session-entries", - "@oh-my-pi/pi-coding-agent/session/session-history-format", - "@oh-my-pi/pi-coding-agent/session/session-listing", - "@oh-my-pi/pi-coding-agent/session/session-loader", - "@oh-my-pi/pi-coding-agent/session/session-manager", - "@oh-my-pi/pi-coding-agent/session/session-migrations", - "@oh-my-pi/pi-coding-agent/session/session-paths", - "@oh-my-pi/pi-coding-agent/session/session-persistence", - "@oh-my-pi/pi-coding-agent/session/session-storage", - "@oh-my-pi/pi-coding-agent/session/settings-stream-fn", - "@oh-my-pi/pi-coding-agent/session/shake-types", - "@oh-my-pi/pi-coding-agent/session/snapcompact-inline", - "@oh-my-pi/pi-coding-agent/session/snapcompact-savings-journal", - "@oh-my-pi/pi-coding-agent/session/sql-session-storage", - "@oh-my-pi/pi-coding-agent/session/streaming-output", - "@oh-my-pi/pi-coding-agent/session/tool-choice-queue", - "@oh-my-pi/pi-coding-agent/session/turn-persistence", - "@oh-my-pi/pi-coding-agent/session/unexpected-stop-classifier", - "@oh-my-pi/pi-coding-agent/session/yield-queue", - "@oh-my-pi/pi-coding-agent/slash-commands/acp-builtins", - "@oh-my-pi/pi-coding-agent/slash-commands/available-commands", - "@oh-my-pi/pi-coding-agent/slash-commands/builtin-registry", - "@oh-my-pi/pi-coding-agent/slash-commands/marketplace-install-parser", - "@oh-my-pi/pi-coding-agent/slash-commands/types", - "@oh-my-pi/pi-coding-agent/ssh/config-writer", - "@oh-my-pi/pi-coding-agent/ssh/connection-manager", - "@oh-my-pi/pi-coding-agent/ssh/file-transfer", - "@oh-my-pi/pi-coding-agent/ssh/ssh-executor", - "@oh-my-pi/pi-coding-agent/ssh/sshfs-mount", - "@oh-my-pi/pi-coding-agent/ssh/utils", - "@oh-my-pi/pi-coding-agent/stt/asr-client", - "@oh-my-pi/pi-coding-agent/stt/asr-protocol", - "@oh-my-pi/pi-coding-agent/stt/asr-worker", - "@oh-my-pi/pi-coding-agent/stt/downloader", - "@oh-my-pi/pi-coding-agent/stt/endpointer", - "@oh-my-pi/pi-coding-agent/stt/models", - "@oh-my-pi/pi-coding-agent/stt/recorder", - "@oh-my-pi/pi-coding-agent/stt/stt-controller", - "@oh-my-pi/pi-coding-agent/stt/transcriber", - "@oh-my-pi/pi-coding-agent/stt/wav", - "@oh-my-pi/pi-coding-agent/task/agents", - "@oh-my-pi/pi-coding-agent/task/commands", - "@oh-my-pi/pi-coding-agent/task/discovery", - "@oh-my-pi/pi-coding-agent/task/executor", - "@oh-my-pi/pi-coding-agent/task/isolation-runner", - "@oh-my-pi/pi-coding-agent/task/name-generator", - "@oh-my-pi/pi-coding-agent/task/omp-command", - "@oh-my-pi/pi-coding-agent/task/output-manager", - "@oh-my-pi/pi-coding-agent/task/parallel", - "@oh-my-pi/pi-coding-agent/task/persisted-revive", - "@oh-my-pi/pi-coding-agent/task/render", - "@oh-my-pi/pi-coding-agent/task/repair-args", - "@oh-my-pi/pi-coding-agent/task/subprocess-tool-registry", - "@oh-my-pi/pi-coding-agent/task/types", - "@oh-my-pi/pi-coding-agent/task/worktree", - "@oh-my-pi/pi-coding-agent/tool-discovery/mode", - "@oh-my-pi/pi-coding-agent/tool-discovery/tool-index", - "@oh-my-pi/pi-coding-agent/tools/acp-bridge", - "@oh-my-pi/pi-coding-agent/tools/approval", - "@oh-my-pi/pi-coding-agent/tools/ask", - "@oh-my-pi/pi-coding-agent/tools/ast-edit", - "@oh-my-pi/pi-coding-agent/tools/ast-grep", - "@oh-my-pi/pi-coding-agent/tools/auto-generated-guard", - "@oh-my-pi/pi-coding-agent/tools/bash-command-fixup", - "@oh-my-pi/pi-coding-agent/tools/bash-interactive", - "@oh-my-pi/pi-coding-agent/tools/bash-interceptor", - "@oh-my-pi/pi-coding-agent/tools/bash-pty-selection", - "@oh-my-pi/pi-coding-agent/tools/bash-skill-urls", - "@oh-my-pi/pi-coding-agent/tools/bash", - "@oh-my-pi/pi-coding-agent/tools/browser", - "@oh-my-pi/pi-coding-agent/tools/builtin-names", - "@oh-my-pi/pi-coding-agent/tools/checkpoint", - "@oh-my-pi/pi-coding-agent/tools/conflict-detect", - "@oh-my-pi/pi-coding-agent/tools/context", - "@oh-my-pi/pi-coding-agent/tools/debug", - "@oh-my-pi/pi-coding-agent/tools/eval-backends", - "@oh-my-pi/pi-coding-agent/tools/eval-render", - "@oh-my-pi/pi-coding-agent/tools/eval", - "@oh-my-pi/pi-coding-agent/tools/fetch", - "@oh-my-pi/pi-coding-agent/tools/file-recorder", - "@oh-my-pi/pi-coding-agent/tools/fs-cache-invalidation", - "@oh-my-pi/pi-coding-agent/tools/gh-cache-invalidation", - "@oh-my-pi/pi-coding-agent/tools/gh-format", - "@oh-my-pi/pi-coding-agent/tools/gh-renderer", - "@oh-my-pi/pi-coding-agent/tools/gh", - "@oh-my-pi/pi-coding-agent/tools/github-cache", - "@oh-my-pi/pi-coding-agent/tools/glob", - "@oh-my-pi/pi-coding-agent/tools/grep", - "@oh-my-pi/pi-coding-agent/tools/grouped-file-output", - "@oh-my-pi/pi-coding-agent/tools/image-gen", - "@oh-my-pi/pi-coding-agent/tools/inspect-image-renderer", - "@oh-my-pi/pi-coding-agent/tools/inspect-image", - "@oh-my-pi/pi-coding-agent/tools/irc", - "@oh-my-pi/pi-coding-agent/tools/job", - "@oh-my-pi/pi-coding-agent/tools/json-tree", - "@oh-my-pi/pi-coding-agent/tools/jtd-to-json-schema", - "@oh-my-pi/pi-coding-agent/tools/jtd-to-typescript", - "@oh-my-pi/pi-coding-agent/tools/jtd-utils", - "@oh-my-pi/pi-coding-agent/tools/learn", - "@oh-my-pi/pi-coding-agent/tools/list-limit", - "@oh-my-pi/pi-coding-agent/tools/manage-skill", - "@oh-my-pi/pi-coding-agent/tools/match-line-format", - "@oh-my-pi/pi-coding-agent/tools/memory-edit", - "@oh-my-pi/pi-coding-agent/tools/memory-recall", - "@oh-my-pi/pi-coding-agent/tools/memory-reflect", - "@oh-my-pi/pi-coding-agent/tools/memory-render", - "@oh-my-pi/pi-coding-agent/tools/memory-retain", - "@oh-my-pi/pi-coding-agent/tools/output-meta", - "@oh-my-pi/pi-coding-agent/tools/output-schema-validator", - "@oh-my-pi/pi-coding-agent/tools/path-utils", - "@oh-my-pi/pi-coding-agent/tools/plan-mode-guard", - "@oh-my-pi/pi-coding-agent/tools/read", - "@oh-my-pi/pi-coding-agent/tools/render-utils", - "@oh-my-pi/pi-coding-agent/tools/renderers", - "@oh-my-pi/pi-coding-agent/tools/report-tool-issue", - "@oh-my-pi/pi-coding-agent/tools/resolve", - "@oh-my-pi/pi-coding-agent/tools/review", - "@oh-my-pi/pi-coding-agent/tools/search-tool-bm25", - "@oh-my-pi/pi-coding-agent/tools/sqlite-reader", - "@oh-my-pi/pi-coding-agent/tools/ssh", - "@oh-my-pi/pi-coding-agent/tools/todo", - "@oh-my-pi/pi-coding-agent/tools/tool-errors", - "@oh-my-pi/pi-coding-agent/tools/tool-result", - "@oh-my-pi/pi-coding-agent/tools/tool-timeouts", - "@oh-my-pi/pi-coding-agent/tools/tts", - "@oh-my-pi/pi-coding-agent/tools/write", - "@oh-my-pi/pi-coding-agent/tools/yield", - "@oh-my-pi/pi-coding-agent/tui/code-cell", - "@oh-my-pi/pi-coding-agent/tui/file-list", - "@oh-my-pi/pi-coding-agent/tui/hyperlink", - "@oh-my-pi/pi-coding-agent/tui/output-block", - "@oh-my-pi/pi-coding-agent/tui/status-line", - "@oh-my-pi/pi-coding-agent/tui/tree-list", - "@oh-my-pi/pi-coding-agent/tui/types", - "@oh-my-pi/pi-coding-agent/tui/utils", - "@oh-my-pi/pi-coding-agent/tui/width-aware-text", - "@oh-my-pi/pi-coding-agent/utils/active-repo-context", - "@oh-my-pi/pi-coding-agent/utils/block-context", - "@oh-my-pi/pi-coding-agent/utils/changelog", - "@oh-my-pi/pi-coding-agent/utils/clipboard", - "@oh-my-pi/pi-coding-agent/utils/command-args", - "@oh-my-pi/pi-coding-agent/utils/commit-message-generator", - "@oh-my-pi/pi-coding-agent/utils/edit-mode", - "@oh-my-pi/pi-coding-agent/utils/enhanced-paste", - "@oh-my-pi/pi-coding-agent/utils/event-bus", - "@oh-my-pi/pi-coding-agent/utils/external-editor", - "@oh-my-pi/pi-coding-agent/utils/file-display-mode", - "@oh-my-pi/pi-coding-agent/utils/file-mentions", - "@oh-my-pi/pi-coding-agent/utils/git", - "@oh-my-pi/pi-coding-agent/utils/image-loading", - "@oh-my-pi/pi-coding-agent/utils/image-resize", - "@oh-my-pi/pi-coding-agent/utils/image-vision-fallback", - "@oh-my-pi/pi-coding-agent/utils/ipc", - "@oh-my-pi/pi-coding-agent/utils/jj", - "@oh-my-pi/pi-coding-agent/utils/lang-from-path", - "@oh-my-pi/pi-coding-agent/utils/markit-cache", - "@oh-my-pi/pi-coding-agent/utils/markit", - "@oh-my-pi/pi-coding-agent/utils/mupdf-wasm-embed", - "@oh-my-pi/pi-coding-agent/utils/open", - "@oh-my-pi/pi-coding-agent/utils/prompt-path", - "@oh-my-pi/pi-coding-agent/utils/qrcode", - "@oh-my-pi/pi-coding-agent/utils/session-color", - "@oh-my-pi/pi-coding-agent/utils/shell-snapshot", - "@oh-my-pi/pi-coding-agent/utils/sixel", - "@oh-my-pi/pi-coding-agent/utils/thinking-display", - "@oh-my-pi/pi-coding-agent/utils/title-generator", - "@oh-my-pi/pi-coding-agent/utils/tool-choice", - "@oh-my-pi/pi-coding-agent/utils/tools-manager", - "@oh-my-pi/pi-coding-agent/utils/turndown", - "@oh-my-pi/pi-coding-agent/utils/zip", - "@oh-my-pi/pi-coding-agent/web/kagi", - "@oh-my-pi/pi-coding-agent/web/parallel", - "@oh-my-pi/pi-coding-agent/web/scrapers/artifacthub", - "@oh-my-pi/pi-coding-agent/web/scrapers/arxiv", - "@oh-my-pi/pi-coding-agent/web/scrapers/aur", - "@oh-my-pi/pi-coding-agent/web/scrapers/biorxiv", - "@oh-my-pi/pi-coding-agent/web/scrapers/bluesky", - "@oh-my-pi/pi-coding-agent/web/scrapers/brew", - "@oh-my-pi/pi-coding-agent/web/scrapers/cheatsh", - "@oh-my-pi/pi-coding-agent/web/scrapers/chocolatey", - "@oh-my-pi/pi-coding-agent/web/scrapers/choosealicense", - "@oh-my-pi/pi-coding-agent/web/scrapers/cisa-kev", - "@oh-my-pi/pi-coding-agent/web/scrapers/clojars", - "@oh-my-pi/pi-coding-agent/web/scrapers/coingecko", - "@oh-my-pi/pi-coding-agent/web/scrapers/crates-io", - "@oh-my-pi/pi-coding-agent/web/scrapers/crossref", - "@oh-my-pi/pi-coding-agent/web/scrapers/devto", - "@oh-my-pi/pi-coding-agent/web/scrapers/discogs", - "@oh-my-pi/pi-coding-agent/web/scrapers/discourse", - "@oh-my-pi/pi-coding-agent/web/scrapers/dockerhub", - "@oh-my-pi/pi-coding-agent/web/scrapers/docs-rs", - "@oh-my-pi/pi-coding-agent/web/scrapers/fdroid", - "@oh-my-pi/pi-coding-agent/web/scrapers/firefox-addons", - "@oh-my-pi/pi-coding-agent/web/scrapers/flathub", - "@oh-my-pi/pi-coding-agent/web/scrapers/github-gist", - "@oh-my-pi/pi-coding-agent/web/scrapers/github", - "@oh-my-pi/pi-coding-agent/web/scrapers/gitlab", - "@oh-my-pi/pi-coding-agent/web/scrapers/go-pkg", - "@oh-my-pi/pi-coding-agent/web/scrapers/hackage", - "@oh-my-pi/pi-coding-agent/web/scrapers/hackernews", - "@oh-my-pi/pi-coding-agent/web/scrapers/hex", - "@oh-my-pi/pi-coding-agent/web/scrapers/huggingface", - "@oh-my-pi/pi-coding-agent/web/scrapers/iacr", - "@oh-my-pi/pi-coding-agent/web/scrapers/jetbrains-marketplace", - "@oh-my-pi/pi-coding-agent/web/scrapers/lemmy", - "@oh-my-pi/pi-coding-agent/web/scrapers/lobsters", - "@oh-my-pi/pi-coding-agent/web/scrapers/mastodon", - "@oh-my-pi/pi-coding-agent/web/scrapers/maven", - "@oh-my-pi/pi-coding-agent/web/scrapers/mdn", - "@oh-my-pi/pi-coding-agent/web/scrapers/metacpan", - "@oh-my-pi/pi-coding-agent/web/scrapers/musicbrainz", - "@oh-my-pi/pi-coding-agent/web/scrapers/npm", - "@oh-my-pi/pi-coding-agent/web/scrapers/nuget", - "@oh-my-pi/pi-coding-agent/web/scrapers/nvd", - "@oh-my-pi/pi-coding-agent/web/scrapers/ollama", - "@oh-my-pi/pi-coding-agent/web/scrapers/open-vsx", - "@oh-my-pi/pi-coding-agent/web/scrapers/opencorporates", - "@oh-my-pi/pi-coding-agent/web/scrapers/openlibrary", - "@oh-my-pi/pi-coding-agent/web/scrapers/orcid", - "@oh-my-pi/pi-coding-agent/web/scrapers/osv", - "@oh-my-pi/pi-coding-agent/web/scrapers/packagist", - "@oh-my-pi/pi-coding-agent/web/scrapers/pub-dev", - "@oh-my-pi/pi-coding-agent/web/scrapers/pubmed", - "@oh-my-pi/pi-coding-agent/web/scrapers/pypi", - "@oh-my-pi/pi-coding-agent/web/scrapers/rawg", - "@oh-my-pi/pi-coding-agent/web/scrapers/readthedocs", - "@oh-my-pi/pi-coding-agent/web/scrapers/reddit", - "@oh-my-pi/pi-coding-agent/web/scrapers/repology", - "@oh-my-pi/pi-coding-agent/web/scrapers/rfc", - "@oh-my-pi/pi-coding-agent/web/scrapers/rubygems", - "@oh-my-pi/pi-coding-agent/web/scrapers/searchcode", - "@oh-my-pi/pi-coding-agent/web/scrapers/sec-edgar", - "@oh-my-pi/pi-coding-agent/web/scrapers/semantic-scholar", - "@oh-my-pi/pi-coding-agent/web/scrapers/snapcraft", - "@oh-my-pi/pi-coding-agent/web/scrapers/sourcegraph", - "@oh-my-pi/pi-coding-agent/web/scrapers/spdx", - "@oh-my-pi/pi-coding-agent/web/scrapers/spotify", - "@oh-my-pi/pi-coding-agent/web/scrapers/stackoverflow", - "@oh-my-pi/pi-coding-agent/web/scrapers/terraform", - "@oh-my-pi/pi-coding-agent/web/scrapers/tldr", - "@oh-my-pi/pi-coding-agent/web/scrapers/twitter", - "@oh-my-pi/pi-coding-agent/web/scrapers/types", - "@oh-my-pi/pi-coding-agent/web/scrapers/utils", - "@oh-my-pi/pi-coding-agent/web/scrapers/vimeo", - "@oh-my-pi/pi-coding-agent/web/scrapers/vscode-marketplace", - "@oh-my-pi/pi-coding-agent/web/scrapers/w3c", - "@oh-my-pi/pi-coding-agent/web/scrapers/wikidata", - "@oh-my-pi/pi-coding-agent/web/scrapers/wikipedia", - "@oh-my-pi/pi-coding-agent/web/scrapers/youtube", - "@oh-my-pi/pi-coding-agent/web/search/provider", - "@oh-my-pi/pi-coding-agent/web/search/render", - "@oh-my-pi/pi-coding-agent/web/search/types", - "@oh-my-pi/pi-coding-agent/web/search/utils", - "@oh-my-pi/pi-coding-agent/web/search/providers/anthropic", - "@oh-my-pi/pi-coding-agent/web/search/providers/base", - "@oh-my-pi/pi-coding-agent/web/search/providers/brave", - "@oh-my-pi/pi-coding-agent/web/search/providers/codex", - "@oh-my-pi/pi-coding-agent/web/search/providers/duckduckgo", - "@oh-my-pi/pi-coding-agent/web/search/providers/exa", - "@oh-my-pi/pi-coding-agent/web/search/providers/firecrawl", - "@oh-my-pi/pi-coding-agent/web/search/providers/gemini", - "@oh-my-pi/pi-coding-agent/web/search/providers/jina", - "@oh-my-pi/pi-coding-agent/web/search/providers/kagi", - "@oh-my-pi/pi-coding-agent/web/search/providers/kimi", - "@oh-my-pi/pi-coding-agent/web/search/providers/parallel", - "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity-auth", - "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity", - "@oh-my-pi/pi-coding-agent/web/search/providers/searxng", - "@oh-my-pi/pi-coding-agent/web/search/providers/synthetic", - "@oh-my-pi/pi-coding-agent/web/search/providers/tavily", - "@oh-my-pi/pi-coding-agent/web/search/providers/tinyfish", - "@oh-my-pi/pi-coding-agent/web/search/providers/utils", - "@oh-my-pi/pi-coding-agent/web/search/providers/xai", - "@oh-my-pi/pi-coding-agent/web/search/providers/zai", - "@oh-my-pi/pi-natives", - "@oh-my-pi/pi-tui", - "@oh-my-pi/pi-tui/components/box", - "@oh-my-pi/pi-tui/components/cancellable-loader", - "@oh-my-pi/pi-tui/components/editor", - "@oh-my-pi/pi-tui/components/image", - "@oh-my-pi/pi-tui/components/input", - "@oh-my-pi/pi-tui/components/loader", - "@oh-my-pi/pi-tui/components/markdown", - "@oh-my-pi/pi-tui/components/scroll-view", - "@oh-my-pi/pi-tui/components/select-list", - "@oh-my-pi/pi-tui/components/settings-list", - "@oh-my-pi/pi-tui/components/spacer", - "@oh-my-pi/pi-tui/components/tab-bar", - "@oh-my-pi/pi-tui/components/text", - "@oh-my-pi/pi-tui/components/truncated-text", - "@oh-my-pi/pi-utils", - "typebox", -]); diff --git a/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-registry.ts b/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-registry.ts deleted file mode 100644 index a19da9e70..000000000 --- a/packages/coding-agent/src/extensibility/plugins/legacy-pi-bundled-registry.ts +++ /dev/null @@ -1,3430 +0,0 @@ -// AUTO-GENERATED by scripts/generate-legacy-pi-bundled-registry.ts. -// Do not edit by hand — run `bun scripts/generate-legacy-pi-bundled-registry.ts --generate`. -/** - * Static handles on every bundled `@oh-my-pi/pi-*` surface — package - * roots plus every non-wildcard subpath export declared in each package's - * `exports` field. Loaded lazily by `legacy-pi-compat.ts` in compiled-binary - * mode (issue #3423) and re-exported through the `omp-legacy-pi-bundled:` - * virtual namespace — bunfs paths cannot be resolved at runtime on Bun - * 1.3.14+, so the only way to re-route extension imports onto the host's - * in-process copy is via live module references captured at compile time. - * - * This module is split out from `legacy-pi-compat.ts` so dev/test runs that - * touch the compat layer never trigger the cascade through - * `legacy-pi-coding-agent-shim.ts → ../index → export/html/...` (which - * requires generated artifacts that only exist after a `bun run build`). - * - * The bundler reaches every entry below via standard static-import analysis, - * so no `--compile` extras are required in `scripts/build-binary.ts`. - */ -import * as bundledPiAgentCore from "@oh-my-pi/pi-agent-core"; -import * as bundledPiAgentCoreCompaction from "@oh-my-pi/pi-agent-core/compaction"; -import * as bundledPiAgentCoreCompactionBranchSummarization from "@oh-my-pi/pi-agent-core/compaction/branch-summarization"; -import * as bundledPiAgentCoreCompactionCompaction from "@oh-my-pi/pi-agent-core/compaction/compaction"; -import * as bundledPiAgentCoreCompactionEntries from "@oh-my-pi/pi-agent-core/compaction/entries"; -import * as bundledPiAgentCoreCompactionErrors from "@oh-my-pi/pi-agent-core/compaction/errors"; -import * as bundledPiAgentCoreCompactionMessages from "@oh-my-pi/pi-agent-core/compaction/messages"; -import * as bundledPiAgentCoreCompactionOpenai from "@oh-my-pi/pi-agent-core/compaction/openai"; -import * as bundledPiAgentCoreCompactionPruning from "@oh-my-pi/pi-agent-core/compaction/pruning"; -import * as bundledPiAgentCoreCompactionShake from "@oh-my-pi/pi-agent-core/compaction/shake"; -import * as bundledPiAgentCoreCompactionToolProtection from "@oh-my-pi/pi-agent-core/compaction/tool-protection"; -import * as bundledPiAgentCoreCompactionUtils from "@oh-my-pi/pi-agent-core/compaction/utils"; -import * as bundledPiAiAuthBroker from "@oh-my-pi/pi-ai/auth-broker"; -import * as bundledPiAiAuthBrokerClient from "@oh-my-pi/pi-ai/auth-broker/client"; -import * as bundledPiAiAuthBrokerDiscover from "@oh-my-pi/pi-ai/auth-broker/discover"; -import * as bundledPiAiAuthBrokerRefresher from "@oh-my-pi/pi-ai/auth-broker/refresher"; -import * as bundledPiAiAuthBrokerRemoteStore from "@oh-my-pi/pi-ai/auth-broker/remote-store"; -import * as bundledPiAiAuthBrokerServer from "@oh-my-pi/pi-ai/auth-broker/server"; -import * as bundledPiAiAuthBrokerSnapshotCache from "@oh-my-pi/pi-ai/auth-broker/snapshot-cache"; -import * as bundledPiAiAuthBrokerTypes from "@oh-my-pi/pi-ai/auth-broker/types"; -import * as bundledPiAiAuthBrokerWireSchemas from "@oh-my-pi/pi-ai/auth-broker/wire-schemas"; -import * as bundledPiAiAuthGateway from "@oh-my-pi/pi-ai/auth-gateway"; -import * as bundledPiAiAuthGatewayHttp from "@oh-my-pi/pi-ai/auth-gateway/http"; -import * as bundledPiAiAuthGatewayServer from "@oh-my-pi/pi-ai/auth-gateway/server"; -import * as bundledPiAiAuthGatewayTypes from "@oh-my-pi/pi-ai/auth-gateway/types"; -import * as bundledPiAiDialect from "@oh-my-pi/pi-ai/dialect"; -import * as bundledPiAiError from "@oh-my-pi/pi-ai/error"; -import * as bundledPiAiOauth from "@oh-my-pi/pi-ai/oauth"; -import * as bundledPiAiOauthAnthropic from "@oh-my-pi/pi-ai/oauth/anthropic"; -import * as bundledPiAiOauthCallbackServer from "@oh-my-pi/pi-ai/oauth/callback-server"; -import * as bundledPiAiOauthCursor from "@oh-my-pi/pi-ai/oauth/cursor"; -import * as bundledPiAiOauthDevin from "@oh-my-pi/pi-ai/oauth/devin"; -import * as bundledPiAiOauthGithubCopilot from "@oh-my-pi/pi-ai/oauth/github-copilot"; -import * as bundledPiAiOauthGitlabDuo from "@oh-my-pi/pi-ai/oauth/gitlab-duo"; -import * as bundledPiAiOauthGitlabDuoWorkflow from "@oh-my-pi/pi-ai/oauth/gitlab-duo-workflow"; -import * as bundledPiAiOauthGoogleAntigravity from "@oh-my-pi/pi-ai/oauth/google-antigravity"; -import * as bundledPiAiOauthGoogleGeminiCli from "@oh-my-pi/pi-ai/oauth/google-gemini-cli"; -import * as bundledPiAiOauthGoogleOauthShared from "@oh-my-pi/pi-ai/oauth/google-oauth-shared"; -import * as bundledPiAiOauthKimi from "@oh-my-pi/pi-ai/oauth/kimi"; -import * as bundledPiAiOauthMinimaxCode from "@oh-my-pi/pi-ai/oauth/minimax-code"; -import * as bundledPiAiOauthOpenaiCodex from "@oh-my-pi/pi-ai/oauth/openai-codex"; -import * as bundledPiAiOauthOpencode from "@oh-my-pi/pi-ai/oauth/opencode"; -import * as bundledPiAiOauthPerplexity from "@oh-my-pi/pi-ai/oauth/perplexity"; -import * as bundledPiAiOauthPkce from "@oh-my-pi/pi-ai/oauth/pkce"; -import * as bundledPiAiOauthTypes from "@oh-my-pi/pi-ai/oauth/types"; -import * as bundledPiAiOauthWafer from "@oh-my-pi/pi-ai/oauth/wafer"; -import * as bundledPiAiOauthXaiOauth from "@oh-my-pi/pi-ai/oauth/xai-oauth"; -import * as bundledPiAiOauthXiaomi from "@oh-my-pi/pi-ai/oauth/xiaomi"; -import * as bundledPiAiProvidersAmazonBedrock from "@oh-my-pi/pi-ai/providers/amazon-bedrock"; -import * as bundledPiAiProvidersAnthropic from "@oh-my-pi/pi-ai/providers/anthropic"; -import * as bundledPiAiProvidersAnthropicClient from "@oh-my-pi/pi-ai/providers/anthropic-client"; -import * as bundledPiAiProvidersAnthropicMessagesServer from "@oh-my-pi/pi-ai/providers/anthropic-messages-server"; -import * as bundledPiAiProvidersAnthropicMessagesServerSchema from "@oh-my-pi/pi-ai/providers/anthropic-messages-server-schema"; -import * as bundledPiAiProvidersAnthropicWire from "@oh-my-pi/pi-ai/providers/anthropic-wire"; -import * as bundledPiAiProvidersAwsCredentials from "@oh-my-pi/pi-ai/providers/aws-credentials"; -import * as bundledPiAiProvidersAwsEventstream from "@oh-my-pi/pi-ai/providers/aws-eventstream"; -import * as bundledPiAiProvidersAwsSigv4 from "@oh-my-pi/pi-ai/providers/aws-sigv4"; -import * as bundledPiAiProvidersAzureOpenaiResponses from "@oh-my-pi/pi-ai/providers/azure-openai-responses"; -import * as bundledPiAiProvidersCursor from "@oh-my-pi/pi-ai/providers/cursor"; -import * as bundledPiAiProvidersDevin from "@oh-my-pi/pi-ai/providers/devin"; -import * as bundledPiAiProvidersErrorMessage from "@oh-my-pi/pi-ai/providers/error-message"; -import * as bundledPiAiProvidersGithubCopilotHeaders from "@oh-my-pi/pi-ai/providers/github-copilot-headers"; -import * as bundledPiAiProvidersGitlabDuo from "@oh-my-pi/pi-ai/providers/gitlab-duo"; -import * as bundledPiAiProvidersGitlabDuoWorkflow from "@oh-my-pi/pi-ai/providers/gitlab-duo-workflow"; -import * as bundledPiAiProvidersGoogle from "@oh-my-pi/pi-ai/providers/google"; -import * as bundledPiAiProvidersGoogleAuth from "@oh-my-pi/pi-ai/providers/google-auth"; -import * as bundledPiAiProvidersGoogleGeminiCli from "@oh-my-pi/pi-ai/providers/google-gemini-cli"; -import * as bundledPiAiProvidersGoogleShared from "@oh-my-pi/pi-ai/providers/google-shared"; -import * as bundledPiAiProvidersGoogleTypes from "@oh-my-pi/pi-ai/providers/google-types"; -import * as bundledPiAiProvidersGoogleVertex from "@oh-my-pi/pi-ai/providers/google-vertex"; -import * as bundledPiAiProvidersGrammar from "@oh-my-pi/pi-ai/providers/grammar"; -import * as bundledPiAiProvidersKimi from "@oh-my-pi/pi-ai/providers/kimi"; -import * as bundledPiAiProvidersMock from "@oh-my-pi/pi-ai/providers/mock"; -import * as bundledPiAiProvidersOllama from "@oh-my-pi/pi-ai/providers/ollama"; -import * as bundledPiAiProvidersOpenaiAnthropicShim from "@oh-my-pi/pi-ai/providers/openai-anthropic-shim"; -import * as bundledPiAiProvidersOpenaiChatServer from "@oh-my-pi/pi-ai/providers/openai-chat-server"; -import * as bundledPiAiProvidersOpenaiChatServerSchema from "@oh-my-pi/pi-ai/providers/openai-chat-server-schema"; -import * as bundledPiAiProvidersOpenaiChatWire from "@oh-my-pi/pi-ai/providers/openai-chat-wire"; -import * as bundledPiAiProvidersOpenaiCodexRequestTransformer from "@oh-my-pi/pi-ai/providers/openai-codex/request-transformer"; -import * as bundledPiAiProvidersOpenaiCodexResponseHandler from "@oh-my-pi/pi-ai/providers/openai-codex/response-handler"; -import * as bundledPiAiProvidersOpenaiCodexResponses from "@oh-my-pi/pi-ai/providers/openai-codex-responses"; -import * as bundledPiAiProvidersOpenaiCompletions from "@oh-my-pi/pi-ai/providers/openai-completions"; -import * as bundledPiAiProvidersOpenaiReasoningFallback from "@oh-my-pi/pi-ai/providers/openai-reasoning-fallback"; -import * as bundledPiAiProvidersOpenaiResponses from "@oh-my-pi/pi-ai/providers/openai-responses"; -import * as bundledPiAiProvidersOpenaiResponsesServer from "@oh-my-pi/pi-ai/providers/openai-responses-server"; -import * as bundledPiAiProvidersOpenaiResponsesServerSchema from "@oh-my-pi/pi-ai/providers/openai-responses-server-schema"; -import * as bundledPiAiProvidersOpenaiResponsesWire from "@oh-my-pi/pi-ai/providers/openai-responses-wire"; -import * as bundledPiAiProvidersOpenaiShared from "@oh-my-pi/pi-ai/providers/openai-shared"; -import * as bundledPiAiProvidersPiNativeClient from "@oh-my-pi/pi-ai/providers/pi-native-client"; -import * as bundledPiAiProvidersPiNativeServer from "@oh-my-pi/pi-ai/providers/pi-native-server"; -import * as bundledPiAiProvidersRegisterBuiltins from "@oh-my-pi/pi-ai/providers/register-builtins"; -import * as bundledPiAiProvidersSynthetic from "@oh-my-pi/pi-ai/providers/synthetic"; -import * as bundledPiAiProvidersTransformMessages from "@oh-my-pi/pi-ai/providers/transform-messages"; -import * as bundledPiAiProvidersVisionGuard from "@oh-my-pi/pi-ai/providers/vision-guard"; -import * as bundledPiAiRegistry from "@oh-my-pi/pi-ai/registry"; -import * as bundledPiAiRegistryOauth from "@oh-my-pi/pi-ai/registry/oauth"; -import * as bundledPiAiUsageClaude from "@oh-my-pi/pi-ai/usage/claude"; -import * as bundledPiAiUsageGemini from "@oh-my-pi/pi-ai/usage/gemini"; -import * as bundledPiAiUsageGithubCopilot from "@oh-my-pi/pi-ai/usage/github-copilot"; -import * as bundledPiAiUsageGoogleAntigravity from "@oh-my-pi/pi-ai/usage/google-antigravity"; -import * as bundledPiAiUsageKimi from "@oh-my-pi/pi-ai/usage/kimi"; -import * as bundledPiAiUsageMinimaxCode from "@oh-my-pi/pi-ai/usage/minimax-code"; -import * as bundledPiAiUsageOllama from "@oh-my-pi/pi-ai/usage/ollama"; -import * as bundledPiAiUsageOpenaiCodex from "@oh-my-pi/pi-ai/usage/openai-codex"; -import * as bundledPiAiUsageOpenaiCodexBaseUrl from "@oh-my-pi/pi-ai/usage/openai-codex-base-url"; -import * as bundledPiAiUsageOpenaiCodexReset from "@oh-my-pi/pi-ai/usage/openai-codex-reset"; -import * as bundledPiAiUsageOpencodeGo from "@oh-my-pi/pi-ai/usage/opencode-go"; -import * as bundledPiAiUsageShared from "@oh-my-pi/pi-ai/usage/shared"; -import * as bundledPiAiUsageZai from "@oh-my-pi/pi-ai/usage/zai"; -import * as bundledPiAiUtilsAbort from "@oh-my-pi/pi-ai/utils/abort"; -import * as bundledPiAiUtilsAnthropicAuth from "@oh-my-pi/pi-ai/utils/anthropic-auth"; -import * as bundledPiAiUtilsBlockSymbols from "@oh-my-pi/pi-ai/utils/block-symbols"; -import * as bundledPiAiUtilsDeterministicId from "@oh-my-pi/pi-ai/utils/deterministic-id"; -import * as bundledPiAiUtilsEmptyCompletionRetry from "@oh-my-pi/pi-ai/utils/empty-completion-retry"; -import * as bundledPiAiUtilsEventStream from "@oh-my-pi/pi-ai/utils/event-stream"; -import * as bundledPiAiUtilsFoundry from "@oh-my-pi/pi-ai/utils/foundry"; -import * as bundledPiAiUtilsGoogleValidation from "@oh-my-pi/pi-ai/utils/google-validation"; -import * as bundledPiAiUtilsHarmonyLeak from "@oh-my-pi/pi-ai/utils/harmony-leak"; -import * as bundledPiAiUtilsHttpInspector from "@oh-my-pi/pi-ai/utils/http-inspector"; -import * as bundledPiAiUtilsIdleIterator from "@oh-my-pi/pi-ai/utils/idle-iterator"; -import * as bundledPiAiUtilsOpenaiHttp from "@oh-my-pi/pi-ai/utils/openai-http"; -import * as bundledPiAiUtilsOpenrouterHeaders from "@oh-my-pi/pi-ai/utils/openrouter-headers"; -import * as bundledPiAiUtilsParseBind from "@oh-my-pi/pi-ai/utils/parse-bind"; -import * as bundledPiAiUtilsProviderResponse from "@oh-my-pi/pi-ai/utils/provider-response"; -import * as bundledPiAiUtilsProxy from "@oh-my-pi/pi-ai/utils/proxy"; -import * as bundledPiAiUtilsRequestDebug from "@oh-my-pi/pi-ai/utils/request-debug"; -import * as bundledPiAiUtilsRetry from "@oh-my-pi/pi-ai/utils/retry"; -import * as bundledPiAiUtilsRetryAfter from "@oh-my-pi/pi-ai/utils/retry-after"; -import * as bundledPiAiUtilsSchema from "@oh-my-pi/pi-ai/utils/schema"; -import * as bundledPiAiUtilsSchemaAdapt from "@oh-my-pi/pi-ai/utils/schema/adapt"; -import * as bundledPiAiUtilsSchemaCompatibility from "@oh-my-pi/pi-ai/utils/schema/compatibility"; -import * as bundledPiAiUtilsSchemaDereference from "@oh-my-pi/pi-ai/utils/schema/dereference"; -import * as bundledPiAiUtilsSchemaDraft from "@oh-my-pi/pi-ai/utils/schema/draft"; -import * as bundledPiAiUtilsSchemaEquality from "@oh-my-pi/pi-ai/utils/schema/equality"; -import * as bundledPiAiUtilsSchemaFields from "@oh-my-pi/pi-ai/utils/schema/fields"; -import * as bundledPiAiUtilsSchemaJsonSchemaValidator from "@oh-my-pi/pi-ai/utils/schema/json-schema-validator"; -import * as bundledPiAiUtilsSchemaMetaValidator from "@oh-my-pi/pi-ai/utils/schema/meta-validator"; -import * as bundledPiAiUtilsSchemaNormalize from "@oh-my-pi/pi-ai/utils/schema/normalize"; -import * as bundledPiAiUtilsSchemaSpill from "@oh-my-pi/pi-ai/utils/schema/spill"; -import * as bundledPiAiUtilsSchemaStamps from "@oh-my-pi/pi-ai/utils/schema/stamps"; -import * as bundledPiAiUtilsSchemaStrictToolValidation from "@oh-my-pi/pi-ai/utils/schema/strict-tool-validation"; -import * as bundledPiAiUtilsSchemaTypes from "@oh-my-pi/pi-ai/utils/schema/types"; -import * as bundledPiAiUtilsSchemaTypescript from "@oh-my-pi/pi-ai/utils/schema/typescript"; -import * as bundledPiAiUtilsSchemaWire from "@oh-my-pi/pi-ai/utils/schema/wire"; -import * as bundledPiAiUtilsSchemaZodDecontaminate from "@oh-my-pi/pi-ai/utils/schema/zod-decontaminate"; -import * as bundledPiAiUtilsSdkStreamTimeout from "@oh-my-pi/pi-ai/utils/sdk-stream-timeout"; -import * as bundledPiAiUtilsSseDebug from "@oh-my-pi/pi-ai/utils/sse-debug"; -import * as bundledPiAiUtilsStreamMarkupHealing from "@oh-my-pi/pi-ai/utils/stream-markup-healing"; -import * as bundledPiAiUtilsThinkingLoop from "@oh-my-pi/pi-ai/utils/thinking-loop"; -import * as bundledPiAiUtilsToolChoice from "@oh-my-pi/pi-ai/utils/tool-choice"; -import * as bundledPiAiUtilsValidation from "@oh-my-pi/pi-ai/utils/validation"; -import * as bundledPiCodingAgentAsync from "@oh-my-pi/pi-coding-agent/async"; -import * as bundledPiCodingAgentAsyncJobManager from "@oh-my-pi/pi-coding-agent/async/job-manager"; -import * as bundledPiCodingAgentAutoresearch from "@oh-my-pi/pi-coding-agent/autoresearch"; -import * as bundledPiCodingAgentAutoresearchDashboard from "@oh-my-pi/pi-coding-agent/autoresearch/dashboard"; -import * as bundledPiCodingAgentAutoresearchGit from "@oh-my-pi/pi-coding-agent/autoresearch/git"; -import * as bundledPiCodingAgentAutoresearchHelpers from "@oh-my-pi/pi-coding-agent/autoresearch/helpers"; -import * as bundledPiCodingAgentAutoresearchState from "@oh-my-pi/pi-coding-agent/autoresearch/state"; -import * as bundledPiCodingAgentAutoresearchStorage from "@oh-my-pi/pi-coding-agent/autoresearch/storage"; -import * as bundledPiCodingAgentAutoresearchToolsInitExperiment from "@oh-my-pi/pi-coding-agent/autoresearch/tools/init-experiment"; -import * as bundledPiCodingAgentAutoresearchToolsLogExperiment from "@oh-my-pi/pi-coding-agent/autoresearch/tools/log-experiment"; -import * as bundledPiCodingAgentAutoresearchToolsRunExperiment from "@oh-my-pi/pi-coding-agent/autoresearch/tools/run-experiment"; -import * as bundledPiCodingAgentAutoresearchToolsUpdateNotes from "@oh-my-pi/pi-coding-agent/autoresearch/tools/update-notes"; -import * as bundledPiCodingAgentAutoresearchTypes from "@oh-my-pi/pi-coding-agent/autoresearch/types"; -import * as bundledPiCodingAgentCapability from "@oh-my-pi/pi-coding-agent/capability"; -import * as bundledPiCodingAgentCapabilityContextFile from "@oh-my-pi/pi-coding-agent/capability/context-file"; -import * as bundledPiCodingAgentCapabilityExtension from "@oh-my-pi/pi-coding-agent/capability/extension"; -import * as bundledPiCodingAgentCapabilityExtensionModule from "@oh-my-pi/pi-coding-agent/capability/extension-module"; -import * as bundledPiCodingAgentCapabilityFs from "@oh-my-pi/pi-coding-agent/capability/fs"; -import * as bundledPiCodingAgentCapabilityHook from "@oh-my-pi/pi-coding-agent/capability/hook"; -import * as bundledPiCodingAgentCapabilityInstruction from "@oh-my-pi/pi-coding-agent/capability/instruction"; -import * as bundledPiCodingAgentCapabilityMcp from "@oh-my-pi/pi-coding-agent/capability/mcp"; -import * as bundledPiCodingAgentCapabilityPrompt from "@oh-my-pi/pi-coding-agent/capability/prompt"; -import * as bundledPiCodingAgentCapabilityRule from "@oh-my-pi/pi-coding-agent/capability/rule"; -import * as bundledPiCodingAgentCapabilityRuleBuckets from "@oh-my-pi/pi-coding-agent/capability/rule-buckets"; -import * as bundledPiCodingAgentCapabilitySettings from "@oh-my-pi/pi-coding-agent/capability/settings"; -import * as bundledPiCodingAgentCapabilitySkill from "@oh-my-pi/pi-coding-agent/capability/skill"; -import * as bundledPiCodingAgentCapabilitySlashCommand from "@oh-my-pi/pi-coding-agent/capability/slash-command"; -import * as bundledPiCodingAgentCapabilitySsh from "@oh-my-pi/pi-coding-agent/capability/ssh"; -import * as bundledPiCodingAgentCapabilitySystemPrompt from "@oh-my-pi/pi-coding-agent/capability/system-prompt"; -import * as bundledPiCodingAgentCapabilityTool from "@oh-my-pi/pi-coding-agent/capability/tool"; -import * as bundledPiCodingAgentCapabilityTypes from "@oh-my-pi/pi-coding-agent/capability/types"; -import * as bundledPiCodingAgentCliAgentsCli from "@oh-my-pi/pi-coding-agent/cli/agents-cli"; -import * as bundledPiCodingAgentCliArgs from "@oh-my-pi/pi-coding-agent/cli/args"; -import * as bundledPiCodingAgentCliAuthBrokerCli from "@oh-my-pi/pi-coding-agent/cli/auth-broker-cli"; -import * as bundledPiCodingAgentCliAuthGatewayCli from "@oh-my-pi/pi-coding-agent/cli/auth-gateway-cli"; -import * as bundledPiCodingAgentCliBenchCli from "@oh-my-pi/pi-coding-agent/cli/bench-cli"; -import * as bundledPiCodingAgentCliClassifyInstallTarget from "@oh-my-pi/pi-coding-agent/cli/classify-install-target"; -import * as bundledPiCodingAgentCliClaudeTraceCli from "@oh-my-pi/pi-coding-agent/cli/claude-trace-cli"; -import * as bundledPiCodingAgentCliCommandsInitXdg from "@oh-my-pi/pi-coding-agent/cli/commands/init-xdg"; -import * as bundledPiCodingAgentCliCompletionGen from "@oh-my-pi/pi-coding-agent/cli/completion-gen"; -import * as bundledPiCodingAgentCliConfigCli from "@oh-my-pi/pi-coding-agent/cli/config-cli"; -import * as bundledPiCodingAgentCliDryBalanceCli from "@oh-my-pi/pi-coding-agent/cli/dry-balance-cli"; -import * as bundledPiCodingAgentCliExtensionFlags from "@oh-my-pi/pi-coding-agent/cli/extension-flags"; -import * as bundledPiCodingAgentCliFileProcessor from "@oh-my-pi/pi-coding-agent/cli/file-processor"; -import * as bundledPiCodingAgentCliFlagTables from "@oh-my-pi/pi-coding-agent/cli/flag-tables"; -import * as bundledPiCodingAgentCliGalleryCli from "@oh-my-pi/pi-coding-agent/cli/gallery-cli"; -import * as bundledPiCodingAgentCliGalleryFixtures from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures"; -import * as bundledPiCodingAgentCliGalleryFixturesAgentic from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/agentic"; -import * as bundledPiCodingAgentCliGalleryFixturesCodeintel from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/codeintel"; -import * as bundledPiCodingAgentCliGalleryFixturesEdit from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/edit"; -import * as bundledPiCodingAgentCliGalleryFixturesFs from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/fs"; -import * as bundledPiCodingAgentCliGalleryFixturesInteraction from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/interaction"; -import * as bundledPiCodingAgentCliGalleryFixturesMemory from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/memory"; -import * as bundledPiCodingAgentCliGalleryFixturesMisc from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/misc"; -import * as bundledPiCodingAgentCliGalleryFixturesSearch from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/search"; -import * as bundledPiCodingAgentCliGalleryFixturesShell from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/shell"; -import * as bundledPiCodingAgentCliGalleryFixturesTypes from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/types"; -import * as bundledPiCodingAgentCliGalleryFixturesWeb from "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/web"; -import * as bundledPiCodingAgentCliGalleryScreenshot from "@oh-my-pi/pi-coding-agent/cli/gallery-screenshot"; -import * as bundledPiCodingAgentCliGcCli from "@oh-my-pi/pi-coding-agent/cli/gc-cli"; -import * as bundledPiCodingAgentCliGrepCli from "@oh-my-pi/pi-coding-agent/cli/grep-cli"; -import * as bundledPiCodingAgentCliGrievancesCli from "@oh-my-pi/pi-coding-agent/cli/grievances-cli"; -import * as bundledPiCodingAgentCliInitialMessage from "@oh-my-pi/pi-coding-agent/cli/initial-message"; -import * as bundledPiCodingAgentCliModelsCli from "@oh-my-pi/pi-coding-agent/cli/models-cli"; -import * as bundledPiCodingAgentCliPluginCli from "@oh-my-pi/pi-coding-agent/cli/plugin-cli"; -import * as bundledPiCodingAgentCliProfileAlias from "@oh-my-pi/pi-coding-agent/cli/profile-alias"; -import * as bundledPiCodingAgentCliProfileBootstrap from "@oh-my-pi/pi-coding-agent/cli/profile-bootstrap"; -import * as bundledPiCodingAgentCliReadCli from "@oh-my-pi/pi-coding-agent/cli/read-cli"; -import * as bundledPiCodingAgentCliSessionPicker from "@oh-my-pi/pi-coding-agent/cli/session-picker"; -import * as bundledPiCodingAgentCliSetupCli from "@oh-my-pi/pi-coding-agent/cli/setup-cli"; -import * as bundledPiCodingAgentCliSetupModelPicker from "@oh-my-pi/pi-coding-agent/cli/setup-model-picker"; -import * as bundledPiCodingAgentCliShellCli from "@oh-my-pi/pi-coding-agent/cli/shell-cli"; -import * as bundledPiCodingAgentCliSshCli from "@oh-my-pi/pi-coding-agent/cli/ssh-cli"; -import * as bundledPiCodingAgentCliStartupCwd from "@oh-my-pi/pi-coding-agent/cli/startup-cwd"; -import * as bundledPiCodingAgentCliStatsCli from "@oh-my-pi/pi-coding-agent/cli/stats-cli"; -import * as bundledPiCodingAgentCliTinyModelsCli from "@oh-my-pi/pi-coding-agent/cli/tiny-models-cli"; -import * as bundledPiCodingAgentCliTtsrCli from "@oh-my-pi/pi-coding-agent/cli/ttsr-cli"; -import * as bundledPiCodingAgentCliUpdateCli from "@oh-my-pi/pi-coding-agent/cli/update-cli"; -import * as bundledPiCodingAgentCliUsageCli from "@oh-my-pi/pi-coding-agent/cli/usage-cli"; -import * as bundledPiCodingAgentCliWebSearchCli from "@oh-my-pi/pi-coding-agent/cli/web-search-cli"; -import * as bundledPiCodingAgentCliWorktreeCli from "@oh-my-pi/pi-coding-agent/cli/worktree-cli"; -import * as bundledPiCodingAgentCommandsAcp from "@oh-my-pi/pi-coding-agent/commands/acp"; -import * as bundledPiCodingAgentCommandsAgents from "@oh-my-pi/pi-coding-agent/commands/agents"; -import * as bundledPiCodingAgentCommandsAuthBroker from "@oh-my-pi/pi-coding-agent/commands/auth-broker"; -import * as bundledPiCodingAgentCommandsAuthGateway from "@oh-my-pi/pi-coding-agent/commands/auth-gateway"; -import * as bundledPiCodingAgentCommandsBench from "@oh-my-pi/pi-coding-agent/commands/bench"; -import * as bundledPiCodingAgentCommandsCommit from "@oh-my-pi/pi-coding-agent/commands/commit"; -import * as bundledPiCodingAgentCommandsComplete from "@oh-my-pi/pi-coding-agent/commands/complete"; -import * as bundledPiCodingAgentCommandsCompletions from "@oh-my-pi/pi-coding-agent/commands/completions"; -import * as bundledPiCodingAgentCommandsConfig from "@oh-my-pi/pi-coding-agent/commands/config"; -import * as bundledPiCodingAgentCommandsDryBalance from "@oh-my-pi/pi-coding-agent/commands/dry-balance"; -import * as bundledPiCodingAgentCommandsGallery from "@oh-my-pi/pi-coding-agent/commands/gallery"; -import * as bundledPiCodingAgentCommandsGc from "@oh-my-pi/pi-coding-agent/commands/gc"; -import * as bundledPiCodingAgentCommandsGrep from "@oh-my-pi/pi-coding-agent/commands/grep"; -import * as bundledPiCodingAgentCommandsGrievances from "@oh-my-pi/pi-coding-agent/commands/grievances"; -import * as bundledPiCodingAgentCommandsInstall from "@oh-my-pi/pi-coding-agent/commands/install"; -import * as bundledPiCodingAgentCommandsJoin from "@oh-my-pi/pi-coding-agent/commands/join"; -import * as bundledPiCodingAgentCommandsLaunch from "@oh-my-pi/pi-coding-agent/commands/launch"; -import * as bundledPiCodingAgentCommandsModels from "@oh-my-pi/pi-coding-agent/commands/models"; -import * as bundledPiCodingAgentCommandsPlugin from "@oh-my-pi/pi-coding-agent/commands/plugin"; -import * as bundledPiCodingAgentCommandsRead from "@oh-my-pi/pi-coding-agent/commands/read"; -import * as bundledPiCodingAgentCommandsSay from "@oh-my-pi/pi-coding-agent/commands/say"; -import * as bundledPiCodingAgentCommandsSetup from "@oh-my-pi/pi-coding-agent/commands/setup"; -import * as bundledPiCodingAgentCommandsShell from "@oh-my-pi/pi-coding-agent/commands/shell"; -import * as bundledPiCodingAgentCommandsSsh from "@oh-my-pi/pi-coding-agent/commands/ssh"; -import * as bundledPiCodingAgentCommandsStats from "@oh-my-pi/pi-coding-agent/commands/stats"; -import * as bundledPiCodingAgentCommandsTinyModels from "@oh-my-pi/pi-coding-agent/commands/tiny-models"; -import * as bundledPiCodingAgentCommandsToken from "@oh-my-pi/pi-coding-agent/commands/token"; -import * as bundledPiCodingAgentCommandsTtsr from "@oh-my-pi/pi-coding-agent/commands/ttsr"; -import * as bundledPiCodingAgentCommandsUpdate from "@oh-my-pi/pi-coding-agent/commands/update"; -import * as bundledPiCodingAgentCommandsUsage from "@oh-my-pi/pi-coding-agent/commands/usage"; -import * as bundledPiCodingAgentCommandsWebSearch from "@oh-my-pi/pi-coding-agent/commands/web-search"; -import * as bundledPiCodingAgentCommandsWorktree from "@oh-my-pi/pi-coding-agent/commands/worktree"; -import * as bundledPiCodingAgentCommit from "@oh-my-pi/pi-coding-agent/commit"; -import * as bundledPiCodingAgentCommitAgentic from "@oh-my-pi/pi-coding-agent/commit/agentic"; -import * as bundledPiCodingAgentCommitAgenticAgent from "@oh-my-pi/pi-coding-agent/commit/agentic/agent"; -import * as bundledPiCodingAgentCommitAgenticFallback from "@oh-my-pi/pi-coding-agent/commit/agentic/fallback"; -import * as bundledPiCodingAgentCommitAgenticState from "@oh-my-pi/pi-coding-agent/commit/agentic/state"; -import * as bundledPiCodingAgentCommitAgenticTools from "@oh-my-pi/pi-coding-agent/commit/agentic/tools"; -import * as bundledPiCodingAgentCommitAgenticToolsAnalyzeFile from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/analyze-file"; -import * as bundledPiCodingAgentCommitAgenticToolsGitFileDiff from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-file-diff"; -import * as bundledPiCodingAgentCommitAgenticToolsGitHunk from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-hunk"; -import * as bundledPiCodingAgentCommitAgenticToolsGitOverview from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-overview"; -import * as bundledPiCodingAgentCommitAgenticToolsProposeChangelog from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-changelog"; -import * as bundledPiCodingAgentCommitAgenticToolsProposeCommit from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-commit"; -import * as bundledPiCodingAgentCommitAgenticToolsRecentCommits from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/recent-commits"; -import * as bundledPiCodingAgentCommitAgenticToolsSchemas from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/schemas"; -import * as bundledPiCodingAgentCommitAgenticToolsSplitCommit from "@oh-my-pi/pi-coding-agent/commit/agentic/tools/split-commit"; -import * as bundledPiCodingAgentCommitAgenticTopoSort from "@oh-my-pi/pi-coding-agent/commit/agentic/topo-sort"; -import * as bundledPiCodingAgentCommitAgenticTrivial from "@oh-my-pi/pi-coding-agent/commit/agentic/trivial"; -import * as bundledPiCodingAgentCommitAgenticValidation from "@oh-my-pi/pi-coding-agent/commit/agentic/validation"; -import * as bundledPiCodingAgentCommitAnalysis from "@oh-my-pi/pi-coding-agent/commit/analysis"; -import * as bundledPiCodingAgentCommitAnalysisConventional from "@oh-my-pi/pi-coding-agent/commit/analysis/conventional"; -import * as bundledPiCodingAgentCommitAnalysisScope from "@oh-my-pi/pi-coding-agent/commit/analysis/scope"; -import * as bundledPiCodingAgentCommitAnalysisSummary from "@oh-my-pi/pi-coding-agent/commit/analysis/summary"; -import * as bundledPiCodingAgentCommitAnalysisValidation from "@oh-my-pi/pi-coding-agent/commit/analysis/validation"; -import * as bundledPiCodingAgentCommitChangelog from "@oh-my-pi/pi-coding-agent/commit/changelog"; -import * as bundledPiCodingAgentCommitChangelogDetect from "@oh-my-pi/pi-coding-agent/commit/changelog/detect"; -import * as bundledPiCodingAgentCommitChangelogGenerate from "@oh-my-pi/pi-coding-agent/commit/changelog/generate"; -import * as bundledPiCodingAgentCommitChangelogParse from "@oh-my-pi/pi-coding-agent/commit/changelog/parse"; -import * as bundledPiCodingAgentCommitCli from "@oh-my-pi/pi-coding-agent/commit/cli"; -import * as bundledPiCodingAgentCommitGitDiff from "@oh-my-pi/pi-coding-agent/commit/git/diff"; -import * as bundledPiCodingAgentCommitMapReduce from "@oh-my-pi/pi-coding-agent/commit/map-reduce"; -import * as bundledPiCodingAgentCommitMapReduceMapPhase from "@oh-my-pi/pi-coding-agent/commit/map-reduce/map-phase"; -import * as bundledPiCodingAgentCommitMapReduceReducePhase from "@oh-my-pi/pi-coding-agent/commit/map-reduce/reduce-phase"; -import * as bundledPiCodingAgentCommitMapReduceUtils from "@oh-my-pi/pi-coding-agent/commit/map-reduce/utils"; -import * as bundledPiCodingAgentCommitMessage from "@oh-my-pi/pi-coding-agent/commit/message"; -import * as bundledPiCodingAgentCommitModelSelection from "@oh-my-pi/pi-coding-agent/commit/model-selection"; -import * as bundledPiCodingAgentCommitPipeline from "@oh-my-pi/pi-coding-agent/commit/pipeline"; -import * as bundledPiCodingAgentCommitSharedLlm from "@oh-my-pi/pi-coding-agent/commit/shared-llm"; -import * as bundledPiCodingAgentCommitTypes from "@oh-my-pi/pi-coding-agent/commit/types"; -import * as bundledPiCodingAgentCommitUtils from "@oh-my-pi/pi-coding-agent/commit/utils"; -import * as bundledPiCodingAgentCommitUtilsExclusions from "@oh-my-pi/pi-coding-agent/commit/utils/exclusions"; -import * as bundledPiCodingAgentConfigApiKeyResolver from "@oh-my-pi/pi-coding-agent/config/api-key-resolver"; -import * as bundledPiCodingAgentConfigAppendOnlyContextMode from "@oh-my-pi/pi-coding-agent/config/append-only-context-mode"; -import * as bundledPiCodingAgentConfigConfigFile from "@oh-my-pi/pi-coding-agent/config/config-file"; -import * as bundledPiCodingAgentConfigFileLock from "@oh-my-pi/pi-coding-agent/config/file-lock"; -import * as bundledPiCodingAgentConfigInlineToolDescriptorsMode from "@oh-my-pi/pi-coding-agent/config/inline-tool-descriptors-mode"; -import * as bundledPiCodingAgentConfigKeybindings from "@oh-my-pi/pi-coding-agent/config/keybindings"; -import * as bundledPiCodingAgentConfigModelDiscovery from "@oh-my-pi/pi-coding-agent/config/model-discovery"; -import * as bundledPiCodingAgentConfigModelRegistry from "@oh-my-pi/pi-coding-agent/config/model-registry"; -import * as bundledPiCodingAgentConfigModelResolver from "@oh-my-pi/pi-coding-agent/config/model-resolver"; -import * as bundledPiCodingAgentConfigModelRoles from "@oh-my-pi/pi-coding-agent/config/model-roles"; -import * as bundledPiCodingAgentConfigModelsConfig from "@oh-my-pi/pi-coding-agent/config/models-config"; -import * as bundledPiCodingAgentConfigModelsConfigSchema from "@oh-my-pi/pi-coding-agent/config/models-config-schema"; -import * as bundledPiCodingAgentConfigPromptTemplates from "@oh-my-pi/pi-coding-agent/config/prompt-templates"; -import * as bundledPiCodingAgentConfigResolveConfigValue from "@oh-my-pi/pi-coding-agent/config/resolve-config-value"; -import * as bundledPiCodingAgentConfigServiceTier from "@oh-my-pi/pi-coding-agent/config/service-tier"; -import * as bundledPiCodingAgentConfigSettings from "@oh-my-pi/pi-coding-agent/config/settings"; -import * as bundledPiCodingAgentConfigSettingsSchema from "@oh-my-pi/pi-coding-agent/config/settings-schema"; -import * as bundledPiCodingAgentDap from "@oh-my-pi/pi-coding-agent/dap"; -import * as bundledPiCodingAgentDapClient from "@oh-my-pi/pi-coding-agent/dap/client"; -import * as bundledPiCodingAgentDapConfig from "@oh-my-pi/pi-coding-agent/dap/config"; -import * as bundledPiCodingAgentDapSession from "@oh-my-pi/pi-coding-agent/dap/session"; -import * as bundledPiCodingAgentDapTypes from "@oh-my-pi/pi-coding-agent/dap/types"; -import * as bundledPiCodingAgentDebug from "@oh-my-pi/pi-coding-agent/debug"; -import * as bundledPiCodingAgentDebugLogFormatting from "@oh-my-pi/pi-coding-agent/debug/log-formatting"; -import * as bundledPiCodingAgentDebugLogViewer from "@oh-my-pi/pi-coding-agent/debug/log-viewer"; -import * as bundledPiCodingAgentDebugProfiler from "@oh-my-pi/pi-coding-agent/debug/profiler"; -import * as bundledPiCodingAgentDebugProtocolProbe from "@oh-my-pi/pi-coding-agent/debug/protocol-probe"; -import * as bundledPiCodingAgentDebugRawSse from "@oh-my-pi/pi-coding-agent/debug/raw-sse"; -import * as bundledPiCodingAgentDebugRawSseBuffer from "@oh-my-pi/pi-coding-agent/debug/raw-sse-buffer"; -import * as bundledPiCodingAgentDebugRemoteDebugger from "@oh-my-pi/pi-coding-agent/debug/remote-debugger"; -import * as bundledPiCodingAgentDebugReportBundle from "@oh-my-pi/pi-coding-agent/debug/report-bundle"; -import * as bundledPiCodingAgentDebugSystemInfo from "@oh-my-pi/pi-coding-agent/debug/system-info"; -import * as bundledPiCodingAgentDebugTerminalInfo from "@oh-my-pi/pi-coding-agent/debug/terminal-info"; -import * as bundledPiCodingAgentDiscovery from "@oh-my-pi/pi-coding-agent/discovery"; -import * as bundledPiCodingAgentDiscoveryAgents from "@oh-my-pi/pi-coding-agent/discovery/agents"; -import * as bundledPiCodingAgentDiscoveryAgentsMd from "@oh-my-pi/pi-coding-agent/discovery/agents-md"; -import * as bundledPiCodingAgentDiscoveryAtImports from "@oh-my-pi/pi-coding-agent/discovery/at-imports"; -import * as bundledPiCodingAgentDiscoveryBuiltin from "@oh-my-pi/pi-coding-agent/discovery/builtin"; -import * as bundledPiCodingAgentDiscoveryBuiltinDefaults from "@oh-my-pi/pi-coding-agent/discovery/builtin-defaults"; -import * as bundledPiCodingAgentDiscoveryClaude from "@oh-my-pi/pi-coding-agent/discovery/claude"; -import * as bundledPiCodingAgentDiscoveryClaudePlugins from "@oh-my-pi/pi-coding-agent/discovery/claude-plugins"; -import * as bundledPiCodingAgentDiscoveryCline from "@oh-my-pi/pi-coding-agent/discovery/cline"; -import * as bundledPiCodingAgentDiscoveryCodex from "@oh-my-pi/pi-coding-agent/discovery/codex"; -import * as bundledPiCodingAgentDiscoveryCursor from "@oh-my-pi/pi-coding-agent/discovery/cursor"; -import * as bundledPiCodingAgentDiscoveryGemini from "@oh-my-pi/pi-coding-agent/discovery/gemini"; -import * as bundledPiCodingAgentDiscoveryGithub from "@oh-my-pi/pi-coding-agent/discovery/github"; -import * as bundledPiCodingAgentDiscoveryHelpers from "@oh-my-pi/pi-coding-agent/discovery/helpers"; -import * as bundledPiCodingAgentDiscoveryMcpJson from "@oh-my-pi/pi-coding-agent/discovery/mcp-json"; -import * as bundledPiCodingAgentDiscoveryOmpExtensionRoots from "@oh-my-pi/pi-coding-agent/discovery/omp-extension-roots"; -import * as bundledPiCodingAgentDiscoveryOmpPlugins from "@oh-my-pi/pi-coding-agent/discovery/omp-plugins"; -import * as bundledPiCodingAgentDiscoveryOpencode from "@oh-my-pi/pi-coding-agent/discovery/opencode"; -import * as bundledPiCodingAgentDiscoveryPluginDirRoots from "@oh-my-pi/pi-coding-agent/discovery/plugin-dir-roots"; -import * as bundledPiCodingAgentDiscoverySsh from "@oh-my-pi/pi-coding-agent/discovery/ssh"; -import * as bundledPiCodingAgentDiscoverySubstitutePluginRoot from "@oh-my-pi/pi-coding-agent/discovery/substitute-plugin-root"; -import * as bundledPiCodingAgentDiscoveryVscode from "@oh-my-pi/pi-coding-agent/discovery/vscode"; -import * as bundledPiCodingAgentDiscoveryWindsurf from "@oh-my-pi/pi-coding-agent/discovery/windsurf"; -import * as bundledPiCodingAgentEdit from "@oh-my-pi/pi-coding-agent/edit"; -import * as bundledPiCodingAgentEditDiff from "@oh-my-pi/pi-coding-agent/edit/diff"; -import * as bundledPiCodingAgentEditFileSnapshotStore from "@oh-my-pi/pi-coding-agent/edit/file-snapshot-store"; -import * as bundledPiCodingAgentEditModesApplyPatch from "@oh-my-pi/pi-coding-agent/edit/modes/apply-patch"; -import * as bundledPiCodingAgentEditModesPatch from "@oh-my-pi/pi-coding-agent/edit/modes/patch"; -import * as bundledPiCodingAgentEditModesReplace from "@oh-my-pi/pi-coding-agent/edit/modes/replace"; -import * as bundledPiCodingAgentEditNormalize from "@oh-my-pi/pi-coding-agent/edit/normalize"; -import * as bundledPiCodingAgentEditNotebook from "@oh-my-pi/pi-coding-agent/edit/notebook"; -import * as bundledPiCodingAgentEditReadFile from "@oh-my-pi/pi-coding-agent/edit/read-file"; -import * as bundledPiCodingAgentEditRenderer from "@oh-my-pi/pi-coding-agent/edit/renderer"; -import * as bundledPiCodingAgentEditStreaming from "@oh-my-pi/pi-coding-agent/edit/streaming"; -import * as bundledPiCodingAgentEval from "@oh-my-pi/pi-coding-agent/eval"; -import * as bundledPiCodingAgentEvalJsContextManager from "@oh-my-pi/pi-coding-agent/eval/js/context-manager"; -import * as bundledPiCodingAgentEvalJsExecutor from "@oh-my-pi/pi-coding-agent/eval/js/executor"; -import * as bundledPiCodingAgentEvalJsToolBridge from "@oh-my-pi/pi-coding-agent/eval/js/tool-bridge"; -import * as bundledPiCodingAgentEvalJsWorkerCore from "@oh-my-pi/pi-coding-agent/eval/js/worker-core"; -import * as bundledPiCodingAgentEvalJsWorkerProtocol from "@oh-my-pi/pi-coding-agent/eval/js/worker-protocol"; -import * as bundledPiCodingAgentEvalPyDisplay from "@oh-my-pi/pi-coding-agent/eval/py/display"; -import * as bundledPiCodingAgentEvalPyExecutor from "@oh-my-pi/pi-coding-agent/eval/py/executor"; -import * as bundledPiCodingAgentEvalPyKernel from "@oh-my-pi/pi-coding-agent/eval/py/kernel"; -import * as bundledPiCodingAgentEvalPyPrelude from "@oh-my-pi/pi-coding-agent/eval/py/prelude"; -import * as bundledPiCodingAgentEvalPyRuntime from "@oh-my-pi/pi-coding-agent/eval/py/runtime"; -import * as bundledPiCodingAgentEvalPySpawnOptions from "@oh-my-pi/pi-coding-agent/eval/py/spawn-options"; -import * as bundledPiCodingAgentEvalPyToolBridge from "@oh-my-pi/pi-coding-agent/eval/py/tool-bridge"; -import * as bundledPiCodingAgentExa from "@oh-my-pi/pi-coding-agent/exa"; -import * as bundledPiCodingAgentExaMcpClient from "@oh-my-pi/pi-coding-agent/exa/mcp-client"; -import * as bundledPiCodingAgentExaTypes from "@oh-my-pi/pi-coding-agent/exa/types"; -import * as bundledPiCodingAgentExecBashExecutor from "@oh-my-pi/pi-coding-agent/exec/bash-executor"; -import * as bundledPiCodingAgentExecExec from "@oh-my-pi/pi-coding-agent/exec/exec"; -import * as bundledPiCodingAgentExecNonInteractiveEnv from "@oh-my-pi/pi-coding-agent/exec/non-interactive-env"; -import * as bundledPiCodingAgentExportCustomShare from "@oh-my-pi/pi-coding-agent/export/custom-share"; -import * as bundledPiCodingAgentExportHtml from "@oh-my-pi/pi-coding-agent/export/html"; -import * as bundledPiCodingAgentExportHtmlWebPalette from "@oh-my-pi/pi-coding-agent/export/html/web-palette"; -import * as bundledPiCodingAgentExportShare from "@oh-my-pi/pi-coding-agent/export/share"; -import * as bundledPiCodingAgentExportTtsr from "@oh-my-pi/pi-coding-agent/export/ttsr"; -import * as bundledPiCodingAgentExtensibilityCustomCommands from "@oh-my-pi/pi-coding-agent/extensibility/custom-commands"; -import * as bundledPiCodingAgentExtensibilityCustomCommandsBundledCiGreen from "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/ci-green"; -import * as bundledPiCodingAgentExtensibilityCustomCommandsBundledReview from "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/review"; -import * as bundledPiCodingAgentExtensibilityCustomCommandsLoader from "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/loader"; -import * as bundledPiCodingAgentExtensibilityCustomCommandsTypes from "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/types"; -import * as bundledPiCodingAgentExtensibilityCustomTools from "@oh-my-pi/pi-coding-agent/extensibility/custom-tools"; -import * as bundledPiCodingAgentExtensibilityCustomToolsLoader from "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/loader"; -import * as bundledPiCodingAgentExtensibilityCustomToolsTypes from "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/types"; -import * as bundledPiCodingAgentExtensibilityCustomToolsWrapper from "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/wrapper"; -import * as bundledPiCodingAgentExtensibilityExtensions from "@oh-my-pi/pi-coding-agent/extensibility/extensions"; -import * as bundledPiCodingAgentExtensibilityExtensionsCompactHandler from "@oh-my-pi/pi-coding-agent/extensibility/extensions/compact-handler"; -import * as bundledPiCodingAgentExtensibilityExtensionsGetCommandsHandler from "@oh-my-pi/pi-coding-agent/extensibility/extensions/get-commands-handler"; -import * as bundledPiCodingAgentExtensibilityExtensionsLoader from "@oh-my-pi/pi-coding-agent/extensibility/extensions/loader"; -import * as bundledPiCodingAgentExtensibilityExtensionsModelApi from "@oh-my-pi/pi-coding-agent/extensibility/extensions/model-api"; -import * as bundledPiCodingAgentExtensibilityExtensionsRunner from "@oh-my-pi/pi-coding-agent/extensibility/extensions/runner"; -import * as bundledPiCodingAgentExtensibilityExtensionsTypes from "@oh-my-pi/pi-coding-agent/extensibility/extensions/types"; -import * as bundledPiCodingAgentExtensibilityExtensionsWrapper from "@oh-my-pi/pi-coding-agent/extensibility/extensions/wrapper"; -import * as bundledPiCodingAgentExtensibilityHooks from "@oh-my-pi/pi-coding-agent/extensibility/hooks"; -import * as bundledPiCodingAgentExtensibilityHooksLoader from "@oh-my-pi/pi-coding-agent/extensibility/hooks/loader"; -import * as bundledPiCodingAgentExtensibilityHooksRunner from "@oh-my-pi/pi-coding-agent/extensibility/hooks/runner"; -import * as bundledPiCodingAgentExtensibilityHooksToolWrapper from "@oh-my-pi/pi-coding-agent/extensibility/hooks/tool-wrapper"; -import * as bundledPiCodingAgentExtensibilityHooksTypes from "@oh-my-pi/pi-coding-agent/extensibility/hooks/types"; -import * as bundledPiCodingAgentExtensibilityLegacyPiAiShim from "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-ai-shim"; -import * as bundledPiCodingAgentExtensibilityLegacyPiCodingAgentShim from "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-coding-agent-shim"; -import * as bundledPiCodingAgentExtensibilityPlugins from "@oh-my-pi/pi-coding-agent/extensibility/plugins"; -import * as bundledPiCodingAgentExtensibilityPluginsDoctor from "@oh-my-pi/pi-coding-agent/extensibility/plugins/doctor"; -import * as bundledPiCodingAgentExtensibilityPluginsGitUrl from "@oh-my-pi/pi-coding-agent/extensibility/plugins/git-url"; -import * as bundledPiCodingAgentExtensibilityPluginsInstaller from "@oh-my-pi/pi-coding-agent/extensibility/plugins/installer"; -import * as bundledPiCodingAgentExtensibilityPluginsLegacyPiBundledKeys from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-keys"; -import * as bundledPiCodingAgentExtensibilityPluginsLegacyPiBundledRegistry from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-registry"; -import * as bundledPiCodingAgentExtensibilityPluginsLegacyPiCompat from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-compat"; -import * as bundledPiCodingAgentExtensibilityPluginsLoader from "@oh-my-pi/pi-coding-agent/extensibility/plugins/loader"; -import * as bundledPiCodingAgentExtensibilityPluginsManager from "@oh-my-pi/pi-coding-agent/extensibility/plugins/manager"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplace from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceCache from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/cache"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceFetcher from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/fetcher"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceManager from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/manager"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceRegistry from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/registry"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceSourceResolver from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/source-resolver"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceTypes from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/types"; -import * as bundledPiCodingAgentExtensibilityPluginsMarketplaceAutoUpdate from "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace-auto-update"; -import * as bundledPiCodingAgentExtensibilityPluginsParser from "@oh-my-pi/pi-coding-agent/extensibility/plugins/parser"; -import * as bundledPiCodingAgentExtensibilityPluginsRuntimeConfig from "@oh-my-pi/pi-coding-agent/extensibility/plugins/runtime-config"; -import * as bundledPiCodingAgentExtensibilityPluginsTypes from "@oh-my-pi/pi-coding-agent/extensibility/plugins/types"; -import * as bundledPiCodingAgentExtensibilitySessionHandlerTypes from "@oh-my-pi/pi-coding-agent/extensibility/session-handler-types"; -import * as bundledPiCodingAgentExtensibilitySharedEvents from "@oh-my-pi/pi-coding-agent/extensibility/shared-events"; -import * as bundledPiCodingAgentExtensibilitySkills from "@oh-my-pi/pi-coding-agent/extensibility/skills"; -import * as bundledPiCodingAgentExtensibilitySlashCommands from "@oh-my-pi/pi-coding-agent/extensibility/slash-commands"; -import * as bundledPiCodingAgentExtensibilityToolEventInput from "@oh-my-pi/pi-coding-agent/extensibility/tool-event-input"; -import * as bundledPiCodingAgentExtensibilityToolProxy from "@oh-my-pi/pi-coding-agent/extensibility/tool-proxy"; -import * as bundledPiCodingAgentExtensibilityTypebox from "@oh-my-pi/pi-coding-agent/extensibility/typebox"; -import * as bundledPiCodingAgentExtensibilityUtils from "@oh-my-pi/pi-coding-agent/extensibility/utils"; -import * as bundledPiCodingAgentHindsight from "@oh-my-pi/pi-coding-agent/hindsight"; -import * as bundledPiCodingAgentHindsightBackend from "@oh-my-pi/pi-coding-agent/hindsight/backend"; -import * as bundledPiCodingAgentHindsightBank from "@oh-my-pi/pi-coding-agent/hindsight/bank"; -import * as bundledPiCodingAgentHindsightClient from "@oh-my-pi/pi-coding-agent/hindsight/client"; -import * as bundledPiCodingAgentHindsightConfig from "@oh-my-pi/pi-coding-agent/hindsight/config"; -import * as bundledPiCodingAgentHindsightContent from "@oh-my-pi/pi-coding-agent/hindsight/content"; -import * as bundledPiCodingAgentHindsightMentalModels from "@oh-my-pi/pi-coding-agent/hindsight/mental-models"; -import * as bundledPiCodingAgentHindsightState from "@oh-my-pi/pi-coding-agent/hindsight/state"; -import * as bundledPiCodingAgentHindsightTranscript from "@oh-my-pi/pi-coding-agent/hindsight/transcript"; -import * as bundledPiCodingAgentInternalUrls from "@oh-my-pi/pi-coding-agent/internal-urls"; -import * as bundledPiCodingAgentInternalUrlsAgentProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/agent-protocol"; -import * as bundledPiCodingAgentInternalUrlsArtifactProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/artifact-protocol"; -import * as bundledPiCodingAgentInternalUrlsDocsIndex from "@oh-my-pi/pi-coding-agent/internal-urls/docs-index"; -import * as bundledPiCodingAgentInternalUrlsFilesystemResource from "@oh-my-pi/pi-coding-agent/internal-urls/filesystem-resource"; -import * as bundledPiCodingAgentInternalUrlsHistoryProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/history-protocol"; -import * as bundledPiCodingAgentInternalUrlsIssuePrProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/issue-pr-protocol"; -import * as bundledPiCodingAgentInternalUrlsJsonQuery from "@oh-my-pi/pi-coding-agent/internal-urls/json-query"; -import * as bundledPiCodingAgentInternalUrlsLocalProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/local-protocol"; -import * as bundledPiCodingAgentInternalUrlsMcpProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/mcp-protocol"; -import * as bundledPiCodingAgentInternalUrlsMemoryProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/memory-protocol"; -import * as bundledPiCodingAgentInternalUrlsOmpProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/omp-protocol"; -import * as bundledPiCodingAgentInternalUrlsParse from "@oh-my-pi/pi-coding-agent/internal-urls/parse"; -import * as bundledPiCodingAgentInternalUrlsRegistryHelpers from "@oh-my-pi/pi-coding-agent/internal-urls/registry-helpers"; -import * as bundledPiCodingAgentInternalUrlsRouter from "@oh-my-pi/pi-coding-agent/internal-urls/router"; -import * as bundledPiCodingAgentInternalUrlsRuleProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/rule-protocol"; -import * as bundledPiCodingAgentInternalUrlsSkillProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/skill-protocol"; -import * as bundledPiCodingAgentInternalUrlsSshProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/ssh-protocol"; -import * as bundledPiCodingAgentInternalUrlsTypes from "@oh-my-pi/pi-coding-agent/internal-urls/types"; -import * as bundledPiCodingAgentInternalUrlsVaultProtocol from "@oh-my-pi/pi-coding-agent/internal-urls/vault-protocol"; -import * as bundledPiCodingAgentLsp from "@oh-my-pi/pi-coding-agent/lsp"; -import * as bundledPiCodingAgentLspClient from "@oh-my-pi/pi-coding-agent/lsp/client"; -import * as bundledPiCodingAgentLspClients from "@oh-my-pi/pi-coding-agent/lsp/clients"; -import * as bundledPiCodingAgentLspClientsBiomeClient from "@oh-my-pi/pi-coding-agent/lsp/clients/biome-client"; -import * as bundledPiCodingAgentLspClientsLspLinterClient from "@oh-my-pi/pi-coding-agent/lsp/clients/lsp-linter-client"; -import * as bundledPiCodingAgentLspClientsSwiftlintClient from "@oh-my-pi/pi-coding-agent/lsp/clients/swiftlint-client"; -import * as bundledPiCodingAgentLspConfig from "@oh-my-pi/pi-coding-agent/lsp/config"; -import * as bundledPiCodingAgentLspDiagnosticsLedger from "@oh-my-pi/pi-coding-agent/lsp/diagnostics-ledger"; -import * as bundledPiCodingAgentLspEdits from "@oh-my-pi/pi-coding-agent/lsp/edits"; -import * as bundledPiCodingAgentLspFormatOptions from "@oh-my-pi/pi-coding-agent/lsp/format-options"; -import * as bundledPiCodingAgentLspLspmux from "@oh-my-pi/pi-coding-agent/lsp/lspmux"; -import * as bundledPiCodingAgentLspRender from "@oh-my-pi/pi-coding-agent/lsp/render"; -import * as bundledPiCodingAgentLspStartupEvents from "@oh-my-pi/pi-coding-agent/lsp/startup-events"; -import * as bundledPiCodingAgentLspTypes from "@oh-my-pi/pi-coding-agent/lsp/types"; -import * as bundledPiCodingAgentLspUtils from "@oh-my-pi/pi-coding-agent/lsp/utils"; -import * as bundledPiCodingAgentMarkit from "@oh-my-pi/pi-coding-agent/markit"; -import * as bundledPiCodingAgentMarkitRegistry from "@oh-my-pi/pi-coding-agent/markit/registry"; -import * as bundledPiCodingAgentMarkitTypes from "@oh-my-pi/pi-coding-agent/markit/types"; -import * as bundledPiCodingAgentMcp from "@oh-my-pi/pi-coding-agent/mcp"; -import * as bundledPiCodingAgentMcpClient from "@oh-my-pi/pi-coding-agent/mcp/client"; -import * as bundledPiCodingAgentMcpConfig from "@oh-my-pi/pi-coding-agent/mcp/config"; -import * as bundledPiCodingAgentMcpConfigWriter from "@oh-my-pi/pi-coding-agent/mcp/config-writer"; -import * as bundledPiCodingAgentMcpJsonRpc from "@oh-my-pi/pi-coding-agent/mcp/json-rpc"; -import * as bundledPiCodingAgentMcpLoader from "@oh-my-pi/pi-coding-agent/mcp/loader"; -import * as bundledPiCodingAgentMcpManager from "@oh-my-pi/pi-coding-agent/mcp/manager"; -import * as bundledPiCodingAgentMcpOauthCredentials from "@oh-my-pi/pi-coding-agent/mcp/oauth-credentials"; -import * as bundledPiCodingAgentMcpOauthDiscovery from "@oh-my-pi/pi-coding-agent/mcp/oauth-discovery"; -import * as bundledPiCodingAgentMcpOauthFlow from "@oh-my-pi/pi-coding-agent/mcp/oauth-flow"; -import * as bundledPiCodingAgentMcpRender from "@oh-my-pi/pi-coding-agent/mcp/render"; -import * as bundledPiCodingAgentMcpSmitheryAuth from "@oh-my-pi/pi-coding-agent/mcp/smithery-auth"; -import * as bundledPiCodingAgentMcpSmitheryConnect from "@oh-my-pi/pi-coding-agent/mcp/smithery-connect"; -import * as bundledPiCodingAgentMcpSmitheryRegistry from "@oh-my-pi/pi-coding-agent/mcp/smithery-registry"; -import * as bundledPiCodingAgentMcpStartupEvents from "@oh-my-pi/pi-coding-agent/mcp/startup-events"; -import * as bundledPiCodingAgentMcpTimeout from "@oh-my-pi/pi-coding-agent/mcp/timeout"; -import * as bundledPiCodingAgentMcpToolBridge from "@oh-my-pi/pi-coding-agent/mcp/tool-bridge"; -import * as bundledPiCodingAgentMcpToolCache from "@oh-my-pi/pi-coding-agent/mcp/tool-cache"; -import * as bundledPiCodingAgentMcpTransports from "@oh-my-pi/pi-coding-agent/mcp/transports"; -import * as bundledPiCodingAgentMcpTransportsHttp from "@oh-my-pi/pi-coding-agent/mcp/transports/http"; -import * as bundledPiCodingAgentMcpTransportsStdio from "@oh-my-pi/pi-coding-agent/mcp/transports/stdio"; -import * as bundledPiCodingAgentMcpTypes from "@oh-my-pi/pi-coding-agent/mcp/types"; -import * as bundledPiCodingAgentMemories from "@oh-my-pi/pi-coding-agent/memories"; -import * as bundledPiCodingAgentMemoriesStorage from "@oh-my-pi/pi-coding-agent/memories/storage"; -import * as bundledPiCodingAgentMemoryBackend from "@oh-my-pi/pi-coding-agent/memory-backend"; -import * as bundledPiCodingAgentMemoryBackendLocalBackend from "@oh-my-pi/pi-coding-agent/memory-backend/local-backend"; -import * as bundledPiCodingAgentMemoryBackendOffBackend from "@oh-my-pi/pi-coding-agent/memory-backend/off-backend"; -import * as bundledPiCodingAgentMemoryBackendResolve from "@oh-my-pi/pi-coding-agent/memory-backend/resolve"; -import * as bundledPiCodingAgentMemoryBackendRuntime from "@oh-my-pi/pi-coding-agent/memory-backend/runtime"; -import * as bundledPiCodingAgentMemoryBackendTypes from "@oh-my-pi/pi-coding-agent/memory-backend/types"; -import * as bundledPiCodingAgentModes from "@oh-my-pi/pi-coding-agent/modes"; -import * as bundledPiCodingAgentModesAcp from "@oh-my-pi/pi-coding-agent/modes/acp"; -import * as bundledPiCodingAgentModesAcpAcpAgent from "@oh-my-pi/pi-coding-agent/modes/acp/acp-agent"; -import * as bundledPiCodingAgentModesAcpAcpClientBridge from "@oh-my-pi/pi-coding-agent/modes/acp/acp-client-bridge"; -import * as bundledPiCodingAgentModesAcpAcpEventMapper from "@oh-my-pi/pi-coding-agent/modes/acp/acp-event-mapper"; -import * as bundledPiCodingAgentModesAcpAcpMode from "@oh-my-pi/pi-coding-agent/modes/acp/acp-mode"; -import * as bundledPiCodingAgentModesAcpTerminalAuth from "@oh-my-pi/pi-coding-agent/modes/acp/terminal-auth"; -import * as bundledPiCodingAgentModesComponents from "@oh-my-pi/pi-coding-agent/modes/components"; -import * as bundledPiCodingAgentModesComponentsAdvisorMessage from "@oh-my-pi/pi-coding-agent/modes/components/advisor-message"; -import * as bundledPiCodingAgentModesComponentsAgentDashboard from "@oh-my-pi/pi-coding-agent/modes/components/agent-dashboard"; -import * as bundledPiCodingAgentModesComponentsAgentHub from "@oh-my-pi/pi-coding-agent/modes/components/agent-hub"; -import * as bundledPiCodingAgentModesComponentsAgentTranscriptViewer from "@oh-my-pi/pi-coding-agent/modes/components/agent-transcript-viewer"; -import * as bundledPiCodingAgentModesComponentsAssistantMessage from "@oh-my-pi/pi-coding-agent/modes/components/assistant-message"; -import * as bundledPiCodingAgentModesComponentsBackgroundTanMessage from "@oh-my-pi/pi-coding-agent/modes/components/background-tan-message"; -import * as bundledPiCodingAgentModesComponentsBashExecution from "@oh-my-pi/pi-coding-agent/modes/components/bash-execution"; -import * as bundledPiCodingAgentModesComponentsBorderedLoader from "@oh-my-pi/pi-coding-agent/modes/components/bordered-loader"; -import * as bundledPiCodingAgentModesComponentsBtwPanel from "@oh-my-pi/pi-coding-agent/modes/components/btw-panel"; -import * as bundledPiCodingAgentModesComponentsCacheInvalidationMarker from "@oh-my-pi/pi-coding-agent/modes/components/cache-invalidation-marker"; -import * as bundledPiCodingAgentModesComponentsChatBlock from "@oh-my-pi/pi-coding-agent/modes/components/chat-block"; -import * as bundledPiCodingAgentModesComponentsChatTranscriptBuilder from "@oh-my-pi/pi-coding-agent/modes/components/chat-transcript-builder"; -import * as bundledPiCodingAgentModesComponentsCollabPromptMessage from "@oh-my-pi/pi-coding-agent/modes/components/collab-prompt-message"; -import * as bundledPiCodingAgentModesComponentsCompactionSummaryMessage from "@oh-my-pi/pi-coding-agent/modes/components/compaction-summary-message"; -import * as bundledPiCodingAgentModesComponentsCopySelector from "@oh-my-pi/pi-coding-agent/modes/components/copy-selector"; -import * as bundledPiCodingAgentModesComponentsCountdownTimer from "@oh-my-pi/pi-coding-agent/modes/components/countdown-timer"; -import * as bundledPiCodingAgentModesComponentsCustomEditor from "@oh-my-pi/pi-coding-agent/modes/components/custom-editor"; -import * as bundledPiCodingAgentModesComponentsCustomMessage from "@oh-my-pi/pi-coding-agent/modes/components/custom-message"; -import * as bundledPiCodingAgentModesComponentsDiff from "@oh-my-pi/pi-coding-agent/modes/components/diff"; -import * as bundledPiCodingAgentModesComponentsDynamicBorder from "@oh-my-pi/pi-coding-agent/modes/components/dynamic-border"; -import * as bundledPiCodingAgentModesComponentsErrorBanner from "@oh-my-pi/pi-coding-agent/modes/components/error-banner"; -import * as bundledPiCodingAgentModesComponentsEvalExecution from "@oh-my-pi/pi-coding-agent/modes/components/eval-execution"; -import * as bundledPiCodingAgentModesComponentsExecutionShared from "@oh-my-pi/pi-coding-agent/modes/components/execution-shared"; -import * as bundledPiCodingAgentModesComponentsExtensions from "@oh-my-pi/pi-coding-agent/modes/components/extensions"; -import * as bundledPiCodingAgentModesComponentsExtensionsExtensionDashboard from "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-dashboard"; -import * as bundledPiCodingAgentModesComponentsExtensionsExtensionList from "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-list"; -import * as bundledPiCodingAgentModesComponentsExtensionsInspectorPanel from "@oh-my-pi/pi-coding-agent/modes/components/extensions/inspector-panel"; -import * as bundledPiCodingAgentModesComponentsExtensionsStateManager from "@oh-my-pi/pi-coding-agent/modes/components/extensions/state-manager"; -import * as bundledPiCodingAgentModesComponentsExtensionsTypes from "@oh-my-pi/pi-coding-agent/modes/components/extensions/types"; -import * as bundledPiCodingAgentModesComponentsFooter from "@oh-my-pi/pi-coding-agent/modes/components/footer"; -import * as bundledPiCodingAgentModesComponentsHistorySearch from "@oh-my-pi/pi-coding-agent/modes/components/history-search"; -import * as bundledPiCodingAgentModesComponentsHookEditor from "@oh-my-pi/pi-coding-agent/modes/components/hook-editor"; -import * as bundledPiCodingAgentModesComponentsHookInput from "@oh-my-pi/pi-coding-agent/modes/components/hook-input"; -import * as bundledPiCodingAgentModesComponentsHookMessage from "@oh-my-pi/pi-coding-agent/modes/components/hook-message"; -import * as bundledPiCodingAgentModesComponentsHookSelector from "@oh-my-pi/pi-coding-agent/modes/components/hook-selector"; -import * as bundledPiCodingAgentModesComponentsKeybindingHints from "@oh-my-pi/pi-coding-agent/modes/components/keybinding-hints"; -import * as bundledPiCodingAgentModesComponentsLateDiagnosticsMessage from "@oh-my-pi/pi-coding-agent/modes/components/late-diagnostics-message"; -import * as bundledPiCodingAgentModesComponentsLoginDialog from "@oh-my-pi/pi-coding-agent/modes/components/login-dialog"; -import * as bundledPiCodingAgentModesComponentsLogoutAccountSelector from "@oh-my-pi/pi-coding-agent/modes/components/logout-account-selector"; -import * as bundledPiCodingAgentModesComponentsMcpAddWizard from "@oh-my-pi/pi-coding-agent/modes/components/mcp-add-wizard"; -import * as bundledPiCodingAgentModesComponentsMessageFrame from "@oh-my-pi/pi-coding-agent/modes/components/message-frame"; -import * as bundledPiCodingAgentModesComponentsModelSelector from "@oh-my-pi/pi-coding-agent/modes/components/model-selector"; -import * as bundledPiCodingAgentModesComponentsMoveOverlay from "@oh-my-pi/pi-coding-agent/modes/components/move-overlay"; -import * as bundledPiCodingAgentModesComponentsOauthSelector from "@oh-my-pi/pi-coding-agent/modes/components/oauth-selector"; -import * as bundledPiCodingAgentModesComponentsOmfgPanel from "@oh-my-pi/pi-coding-agent/modes/components/omfg-panel"; -import * as bundledPiCodingAgentModesComponentsOverlayBox from "@oh-my-pi/pi-coding-agent/modes/components/overlay-box"; -import * as bundledPiCodingAgentModesComponentsPlanReviewOverlay from "@oh-my-pi/pi-coding-agent/modes/components/plan-review-overlay"; -import * as bundledPiCodingAgentModesComponentsPlanToc from "@oh-my-pi/pi-coding-agent/modes/components/plan-toc"; -import * as bundledPiCodingAgentModesComponentsPluginSelector from "@oh-my-pi/pi-coding-agent/modes/components/plugin-selector"; -import * as bundledPiCodingAgentModesComponentsPluginSettings from "@oh-my-pi/pi-coding-agent/modes/components/plugin-settings"; -import * as bundledPiCodingAgentModesComponentsQueueModeSelector from "@oh-my-pi/pi-coding-agent/modes/components/queue-mode-selector"; -import * as bundledPiCodingAgentModesComponentsReadToolGroup from "@oh-my-pi/pi-coding-agent/modes/components/read-tool-group"; -import * as bundledPiCodingAgentModesComponentsResetUsageSelector from "@oh-my-pi/pi-coding-agent/modes/components/reset-usage-selector"; -import * as bundledPiCodingAgentModesComponentsSegmentTrack from "@oh-my-pi/pi-coding-agent/modes/components/segment-track"; -import * as bundledPiCodingAgentModesComponentsSelectListMouseRouting from "@oh-my-pi/pi-coding-agent/modes/components/select-list-mouse-routing"; -import * as bundledPiCodingAgentModesComponentsSelectorHelpers from "@oh-my-pi/pi-coding-agent/modes/components/selector-helpers"; -import * as bundledPiCodingAgentModesComponentsSessionSelector from "@oh-my-pi/pi-coding-agent/modes/components/session-selector"; -import * as bundledPiCodingAgentModesComponentsSettingsDefs from "@oh-my-pi/pi-coding-agent/modes/components/settings-defs"; -import * as bundledPiCodingAgentModesComponentsSettingsSelector from "@oh-my-pi/pi-coding-agent/modes/components/settings-selector"; -import * as bundledPiCodingAgentModesComponentsShowImagesSelector from "@oh-my-pi/pi-coding-agent/modes/components/show-images-selector"; -import * as bundledPiCodingAgentModesComponentsSkillMessage from "@oh-my-pi/pi-coding-agent/modes/components/skill-message"; -import * as bundledPiCodingAgentModesComponentsSnapcompactShapePreview from "@oh-my-pi/pi-coding-agent/modes/components/snapcompact-shape-preview"; -import * as bundledPiCodingAgentModesComponentsStatusLine from "@oh-my-pi/pi-coding-agent/modes/components/status-line"; -import * as bundledPiCodingAgentModesComponentsStatusLineComponent from "@oh-my-pi/pi-coding-agent/modes/components/status-line/component"; -import * as bundledPiCodingAgentModesComponentsStatusLineContextThresholds from "@oh-my-pi/pi-coding-agent/modes/components/status-line/context-thresholds"; -import * as bundledPiCodingAgentModesComponentsStatusLineGitUtils from "@oh-my-pi/pi-coding-agent/modes/components/status-line/git-utils"; -import * as bundledPiCodingAgentModesComponentsStatusLinePresets from "@oh-my-pi/pi-coding-agent/modes/components/status-line/presets"; -import * as bundledPiCodingAgentModesComponentsStatusLineSegments from "@oh-my-pi/pi-coding-agent/modes/components/status-line/segments"; -import * as bundledPiCodingAgentModesComponentsStatusLineSeparators from "@oh-my-pi/pi-coding-agent/modes/components/status-line/separators"; -import * as bundledPiCodingAgentModesComponentsStatusLineTokenRate from "@oh-my-pi/pi-coding-agent/modes/components/status-line/token-rate"; -import * as bundledPiCodingAgentModesComponentsStatusLineTypes from "@oh-my-pi/pi-coding-agent/modes/components/status-line/types"; -import * as bundledPiCodingAgentModesComponentsThemeSelector from "@oh-my-pi/pi-coding-agent/modes/components/theme-selector"; -import * as bundledPiCodingAgentModesComponentsThinkingSelector from "@oh-my-pi/pi-coding-agent/modes/components/thinking-selector"; -import * as bundledPiCodingAgentModesComponentsTinyTitleDownloadProgress from "@oh-my-pi/pi-coding-agent/modes/components/tiny-title-download-progress"; -import * as bundledPiCodingAgentModesComponentsTodoReminder from "@oh-my-pi/pi-coding-agent/modes/components/todo-reminder"; -import * as bundledPiCodingAgentModesComponentsToolExecution from "@oh-my-pi/pi-coding-agent/modes/components/tool-execution"; -import * as bundledPiCodingAgentModesComponentsTranscriptContainer from "@oh-my-pi/pi-coding-agent/modes/components/transcript-container"; -import * as bundledPiCodingAgentModesComponentsTreeSelector from "@oh-my-pi/pi-coding-agent/modes/components/tree-selector"; -import * as bundledPiCodingAgentModesComponentsTtsrNotification from "@oh-my-pi/pi-coding-agent/modes/components/ttsr-notification"; -import * as bundledPiCodingAgentModesComponentsUsageRow from "@oh-my-pi/pi-coding-agent/modes/components/usage-row"; -import * as bundledPiCodingAgentModesComponentsUserMessage from "@oh-my-pi/pi-coding-agent/modes/components/user-message"; -import * as bundledPiCodingAgentModesComponentsUserMessageSelector from "@oh-my-pi/pi-coding-agent/modes/components/user-message-selector"; -import * as bundledPiCodingAgentModesComponentsVisualTruncate from "@oh-my-pi/pi-coding-agent/modes/components/visual-truncate"; -import * as bundledPiCodingAgentModesComponentsWelcome from "@oh-my-pi/pi-coding-agent/modes/components/welcome"; -import * as bundledPiCodingAgentModesControllersBtwController from "@oh-my-pi/pi-coding-agent/modes/controllers/btw-controller"; -import * as bundledPiCodingAgentModesControllersCommandController from "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller"; -import * as bundledPiCodingAgentModesControllersCommandControllerShared from "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller-shared"; -import * as bundledPiCodingAgentModesControllersEventController from "@oh-my-pi/pi-coding-agent/modes/controllers/event-controller"; -import * as bundledPiCodingAgentModesControllersExtensionUiController from "@oh-my-pi/pi-coding-agent/modes/controllers/extension-ui-controller"; -import * as bundledPiCodingAgentModesControllersInputController from "@oh-my-pi/pi-coding-agent/modes/controllers/input-controller"; -import * as bundledPiCodingAgentModesControllersMcpCommandController from "@oh-my-pi/pi-coding-agent/modes/controllers/mcp-command-controller"; -import * as bundledPiCodingAgentModesControllersOmfgController from "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-controller"; -import * as bundledPiCodingAgentModesControllersOmfgRule from "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-rule"; -import * as bundledPiCodingAgentModesControllersSelectorController from "@oh-my-pi/pi-coding-agent/modes/controllers/selector-controller"; -import * as bundledPiCodingAgentModesControllersSessionFocusController from "@oh-my-pi/pi-coding-agent/modes/controllers/session-focus-controller"; -import * as bundledPiCodingAgentModesControllersSshCommandController from "@oh-my-pi/pi-coding-agent/modes/controllers/ssh-command-controller"; -import * as bundledPiCodingAgentModesControllersStreamingReveal from "@oh-my-pi/pi-coding-agent/modes/controllers/streaming-reveal"; -import * as bundledPiCodingAgentModesControllersTanCommandController from "@oh-my-pi/pi-coding-agent/modes/controllers/tan-command-controller"; -import * as bundledPiCodingAgentModesControllersTodoCommandController from "@oh-my-pi/pi-coding-agent/modes/controllers/todo-command-controller"; -import * as bundledPiCodingAgentModesControllersToolArgsReveal from "@oh-my-pi/pi-coding-agent/modes/controllers/tool-args-reveal"; -import * as bundledPiCodingAgentModesEmojiAutocomplete from "@oh-my-pi/pi-coding-agent/modes/emoji-autocomplete"; -import * as bundledPiCodingAgentModesGradientHighlight from "@oh-my-pi/pi-coding-agent/modes/gradient-highlight"; -import * as bundledPiCodingAgentModesImageReferences from "@oh-my-pi/pi-coding-agent/modes/image-references"; -import * as bundledPiCodingAgentModesInteractiveMode from "@oh-my-pi/pi-coding-agent/modes/interactive-mode"; -import * as bundledPiCodingAgentModesInternalUrlAutocomplete from "@oh-my-pi/pi-coding-agent/modes/internal-url-autocomplete"; -import * as bundledPiCodingAgentModesLoopLimit from "@oh-my-pi/pi-coding-agent/modes/loop-limit"; -import * as bundledPiCodingAgentModesMagicKeywords from "@oh-my-pi/pi-coding-agent/modes/magic-keywords"; -import * as bundledPiCodingAgentModesMarkdownProse from "@oh-my-pi/pi-coding-agent/modes/markdown-prose"; -import * as bundledPiCodingAgentModesOauthManualInput from "@oh-my-pi/pi-coding-agent/modes/oauth-manual-input"; -import * as bundledPiCodingAgentModesOrchestrate from "@oh-my-pi/pi-coding-agent/modes/orchestrate"; -import * as bundledPiCodingAgentModesPrintMode from "@oh-my-pi/pi-coding-agent/modes/print-mode"; -import * as bundledPiCodingAgentModesPromptActionAutocomplete from "@oh-my-pi/pi-coding-agent/modes/prompt-action-autocomplete"; -import * as bundledPiCodingAgentModesRpcHostTools from "@oh-my-pi/pi-coding-agent/modes/rpc/host-tools"; -import * as bundledPiCodingAgentModesRpcHostUris from "@oh-my-pi/pi-coding-agent/modes/rpc/host-uris"; -import * as bundledPiCodingAgentModesRpcRpcClient from "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-client"; -import * as bundledPiCodingAgentModesRpcRpcMode from "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-mode"; -import * as bundledPiCodingAgentModesRpcRpcSubagents from "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-subagents"; -import * as bundledPiCodingAgentModesRpcRpcTypes from "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-types"; -import * as bundledPiCodingAgentModesRunningSubagentBadge from "@oh-my-pi/pi-coding-agent/modes/running-subagent-badge"; -import * as bundledPiCodingAgentModesRuntimeInit from "@oh-my-pi/pi-coding-agent/modes/runtime-init"; -import * as bundledPiCodingAgentModesSessionObserverRegistry from "@oh-my-pi/pi-coding-agent/modes/session-observer-registry"; -import * as bundledPiCodingAgentModesSetupVersion from "@oh-my-pi/pi-coding-agent/modes/setup-version"; -import * as bundledPiCodingAgentModesSetupWizard from "@oh-my-pi/pi-coding-agent/modes/setup-wizard"; -import * as bundledPiCodingAgentModesSetupWizardLazy from "@oh-my-pi/pi-coding-agent/modes/setup-wizard/lazy"; -import * as bundledPiCodingAgentModesSetupWizardStartupSplash from "@oh-my-pi/pi-coding-agent/modes/setup-wizard/startup-splash"; -import * as bundledPiCodingAgentModesSetupWizardWizardOverlay from "@oh-my-pi/pi-coding-agent/modes/setup-wizard/wizard-overlay"; -import * as bundledPiCodingAgentModesShared from "@oh-my-pi/pi-coding-agent/modes/shared"; -import * as bundledPiCodingAgentModesThemeDefaults from "@oh-my-pi/pi-coding-agent/modes/theme/defaults"; -import * as bundledPiCodingAgentModesThemeMermaidCache from "@oh-my-pi/pi-coding-agent/modes/theme/mermaid-cache"; -import * as bundledPiCodingAgentModesThemeShimmer from "@oh-my-pi/pi-coding-agent/modes/theme/shimmer"; -import * as bundledPiCodingAgentModesThemeTheme from "@oh-my-pi/pi-coding-agent/modes/theme/theme"; -import * as bundledPiCodingAgentModesTurnBudget from "@oh-my-pi/pi-coding-agent/modes/turn-budget"; -import * as bundledPiCodingAgentModesTypes from "@oh-my-pi/pi-coding-agent/modes/types"; -import * as bundledPiCodingAgentModesUltrathink from "@oh-my-pi/pi-coding-agent/modes/ultrathink"; -import * as bundledPiCodingAgentModesUtilsContextUsage from "@oh-my-pi/pi-coding-agent/modes/utils/context-usage"; -import * as bundledPiCodingAgentModesUtilsCopyTargets from "@oh-my-pi/pi-coding-agent/modes/utils/copy-targets"; -import * as bundledPiCodingAgentModesUtilsHotkeysMarkdown from "@oh-my-pi/pi-coding-agent/modes/utils/hotkeys-markdown"; -import * as bundledPiCodingAgentModesUtilsInteractiveContextHelpers from "@oh-my-pi/pi-coding-agent/modes/utils/interactive-context-helpers"; -import * as bundledPiCodingAgentModesUtilsKeybindingMatchers from "@oh-my-pi/pi-coding-agent/modes/utils/keybinding-matchers"; -import * as bundledPiCodingAgentModesUtilsToolsMarkdown from "@oh-my-pi/pi-coding-agent/modes/utils/tools-markdown"; -import * as bundledPiCodingAgentModesUtilsTranscriptRenderHelpers from "@oh-my-pi/pi-coding-agent/modes/utils/transcript-render-helpers"; -import * as bundledPiCodingAgentModesUtilsUiHelpers from "@oh-my-pi/pi-coding-agent/modes/utils/ui-helpers"; -import * as bundledPiCodingAgentModesWorkflow from "@oh-my-pi/pi-coding-agent/modes/workflow"; -import * as bundledPiCodingAgentPlanModeApprovedPlan from "@oh-my-pi/pi-coding-agent/plan-mode/approved-plan"; -import * as bundledPiCodingAgentPlanModePlanHandoff from "@oh-my-pi/pi-coding-agent/plan-mode/plan-handoff"; -import * as bundledPiCodingAgentPlanModePlanProtection from "@oh-my-pi/pi-coding-agent/plan-mode/plan-protection"; -import * as bundledPiCodingAgentPlanModeState from "@oh-my-pi/pi-coding-agent/plan-mode/state"; -import * as bundledPiCodingAgentSecrets from "@oh-my-pi/pi-coding-agent/secrets"; -import * as bundledPiCodingAgentSecretsObfuscator from "@oh-my-pi/pi-coding-agent/secrets/obfuscator"; -import * as bundledPiCodingAgentSecretsRegex from "@oh-my-pi/pi-coding-agent/secrets/regex"; -import * as bundledPiCodingAgentSessionAgentSession from "@oh-my-pi/pi-coding-agent/session/agent-session"; -import * as bundledPiCodingAgentSessionAgentStorage from "@oh-my-pi/pi-coding-agent/session/agent-storage"; -import * as bundledPiCodingAgentSessionArtifacts from "@oh-my-pi/pi-coding-agent/session/artifacts"; -import * as bundledPiCodingAgentSessionAuthBrokerConfig from "@oh-my-pi/pi-coding-agent/session/auth-broker-config"; -import * as bundledPiCodingAgentSessionAuthStorage from "@oh-my-pi/pi-coding-agent/session/auth-storage"; -import * as bundledPiCodingAgentSessionBlobStore from "@oh-my-pi/pi-coding-agent/session/blob-store"; -import * as bundledPiCodingAgentSessionClientBridge from "@oh-my-pi/pi-coding-agent/session/client-bridge"; -import * as bundledPiCodingAgentSessionCodexAutoReset from "@oh-my-pi/pi-coding-agent/session/codex-auto-reset"; -import * as bundledPiCodingAgentSessionCompactModes from "@oh-my-pi/pi-coding-agent/session/compact-modes"; -import * as bundledPiCodingAgentSessionHistoryStorage from "@oh-my-pi/pi-coding-agent/session/history-storage"; -import * as bundledPiCodingAgentSessionIndexedSessionStorage from "@oh-my-pi/pi-coding-agent/session/indexed-session-storage"; -import * as bundledPiCodingAgentSessionMessages from "@oh-my-pi/pi-coding-agent/session/messages"; -import * as bundledPiCodingAgentSessionProviderImageBudget from "@oh-my-pi/pi-coding-agent/session/provider-image-budget"; -import * as bundledPiCodingAgentSessionRedisSessionStorage from "@oh-my-pi/pi-coding-agent/session/redis-session-storage"; -import * as bundledPiCodingAgentSessionSessionContext from "@oh-my-pi/pi-coding-agent/session/session-context"; -import * as bundledPiCodingAgentSessionSessionDumpFormat from "@oh-my-pi/pi-coding-agent/session/session-dump-format"; -import * as bundledPiCodingAgentSessionSessionEntries from "@oh-my-pi/pi-coding-agent/session/session-entries"; -import * as bundledPiCodingAgentSessionSessionHistoryFormat from "@oh-my-pi/pi-coding-agent/session/session-history-format"; -import * as bundledPiCodingAgentSessionSessionListing from "@oh-my-pi/pi-coding-agent/session/session-listing"; -import * as bundledPiCodingAgentSessionSessionLoader from "@oh-my-pi/pi-coding-agent/session/session-loader"; -import * as bundledPiCodingAgentSessionSessionManager from "@oh-my-pi/pi-coding-agent/session/session-manager"; -import * as bundledPiCodingAgentSessionSessionMigrations from "@oh-my-pi/pi-coding-agent/session/session-migrations"; -import * as bundledPiCodingAgentSessionSessionPaths from "@oh-my-pi/pi-coding-agent/session/session-paths"; -import * as bundledPiCodingAgentSessionSessionPersistence from "@oh-my-pi/pi-coding-agent/session/session-persistence"; -import * as bundledPiCodingAgentSessionSessionStorage from "@oh-my-pi/pi-coding-agent/session/session-storage"; -import * as bundledPiCodingAgentSessionSettingsStreamFn from "@oh-my-pi/pi-coding-agent/session/settings-stream-fn"; -import * as bundledPiCodingAgentSessionShakeTypes from "@oh-my-pi/pi-coding-agent/session/shake-types"; -import * as bundledPiCodingAgentSessionSnapcompactInline from "@oh-my-pi/pi-coding-agent/session/snapcompact-inline"; -import * as bundledPiCodingAgentSessionSnapcompactSavingsJournal from "@oh-my-pi/pi-coding-agent/session/snapcompact-savings-journal"; -import * as bundledPiCodingAgentSessionSqlSessionStorage from "@oh-my-pi/pi-coding-agent/session/sql-session-storage"; -import * as bundledPiCodingAgentSessionStreamingOutput from "@oh-my-pi/pi-coding-agent/session/streaming-output"; -import * as bundledPiCodingAgentSessionToolChoiceQueue from "@oh-my-pi/pi-coding-agent/session/tool-choice-queue"; -import * as bundledPiCodingAgentSessionTurnPersistence from "@oh-my-pi/pi-coding-agent/session/turn-persistence"; -import * as bundledPiCodingAgentSessionUnexpectedStopClassifier from "@oh-my-pi/pi-coding-agent/session/unexpected-stop-classifier"; -import * as bundledPiCodingAgentSessionYieldQueue from "@oh-my-pi/pi-coding-agent/session/yield-queue"; -import * as bundledPiCodingAgentSlashCommandsAcpBuiltins from "@oh-my-pi/pi-coding-agent/slash-commands/acp-builtins"; -import * as bundledPiCodingAgentSlashCommandsAvailableCommands from "@oh-my-pi/pi-coding-agent/slash-commands/available-commands"; -import * as bundledPiCodingAgentSlashCommandsBuiltinRegistry from "@oh-my-pi/pi-coding-agent/slash-commands/builtin-registry"; -import * as bundledPiCodingAgentSlashCommandsMarketplaceInstallParser from "@oh-my-pi/pi-coding-agent/slash-commands/marketplace-install-parser"; -import * as bundledPiCodingAgentSlashCommandsTypes from "@oh-my-pi/pi-coding-agent/slash-commands/types"; -import * as bundledPiCodingAgentSshConfigWriter from "@oh-my-pi/pi-coding-agent/ssh/config-writer"; -import * as bundledPiCodingAgentSshConnectionManager from "@oh-my-pi/pi-coding-agent/ssh/connection-manager"; -import * as bundledPiCodingAgentSshFileTransfer from "@oh-my-pi/pi-coding-agent/ssh/file-transfer"; -import * as bundledPiCodingAgentSshSshExecutor from "@oh-my-pi/pi-coding-agent/ssh/ssh-executor"; -import * as bundledPiCodingAgentSshSshfsMount from "@oh-my-pi/pi-coding-agent/ssh/sshfs-mount"; -import * as bundledPiCodingAgentSshUtils from "@oh-my-pi/pi-coding-agent/ssh/utils"; -import * as bundledPiCodingAgentStt from "@oh-my-pi/pi-coding-agent/stt"; -import * as bundledPiCodingAgentSttAsrClient from "@oh-my-pi/pi-coding-agent/stt/asr-client"; -import * as bundledPiCodingAgentSttAsrProtocol from "@oh-my-pi/pi-coding-agent/stt/asr-protocol"; -import * as bundledPiCodingAgentSttAsrWorker from "@oh-my-pi/pi-coding-agent/stt/asr-worker"; -import * as bundledPiCodingAgentSttDownloader from "@oh-my-pi/pi-coding-agent/stt/downloader"; -import * as bundledPiCodingAgentSttEndpointer from "@oh-my-pi/pi-coding-agent/stt/endpointer"; -import * as bundledPiCodingAgentSttModels from "@oh-my-pi/pi-coding-agent/stt/models"; -import * as bundledPiCodingAgentSttRecorder from "@oh-my-pi/pi-coding-agent/stt/recorder"; -import * as bundledPiCodingAgentSttSttController from "@oh-my-pi/pi-coding-agent/stt/stt-controller"; -import * as bundledPiCodingAgentSttTranscriber from "@oh-my-pi/pi-coding-agent/stt/transcriber"; -import * as bundledPiCodingAgentSttWav from "@oh-my-pi/pi-coding-agent/stt/wav"; -import * as bundledPiCodingAgentTask from "@oh-my-pi/pi-coding-agent/task"; -import * as bundledPiCodingAgentTaskAgents from "@oh-my-pi/pi-coding-agent/task/agents"; -import * as bundledPiCodingAgentTaskCommands from "@oh-my-pi/pi-coding-agent/task/commands"; -import * as bundledPiCodingAgentTaskDiscovery from "@oh-my-pi/pi-coding-agent/task/discovery"; -import * as bundledPiCodingAgentTaskExecutor from "@oh-my-pi/pi-coding-agent/task/executor"; -import * as bundledPiCodingAgentTaskIsolationRunner from "@oh-my-pi/pi-coding-agent/task/isolation-runner"; -import * as bundledPiCodingAgentTaskNameGenerator from "@oh-my-pi/pi-coding-agent/task/name-generator"; -import * as bundledPiCodingAgentTaskOmpCommand from "@oh-my-pi/pi-coding-agent/task/omp-command"; -import * as bundledPiCodingAgentTaskOutputManager from "@oh-my-pi/pi-coding-agent/task/output-manager"; -import * as bundledPiCodingAgentTaskParallel from "@oh-my-pi/pi-coding-agent/task/parallel"; -import * as bundledPiCodingAgentTaskPersistedRevive from "@oh-my-pi/pi-coding-agent/task/persisted-revive"; -import * as bundledPiCodingAgentTaskRender from "@oh-my-pi/pi-coding-agent/task/render"; -import * as bundledPiCodingAgentTaskRepairArgs from "@oh-my-pi/pi-coding-agent/task/repair-args"; -import * as bundledPiCodingAgentTaskSubprocessToolRegistry from "@oh-my-pi/pi-coding-agent/task/subprocess-tool-registry"; -import * as bundledPiCodingAgentTaskTypes from "@oh-my-pi/pi-coding-agent/task/types"; -import * as bundledPiCodingAgentTaskWorktree from "@oh-my-pi/pi-coding-agent/task/worktree"; -import * as bundledPiCodingAgentToolDiscoveryMode from "@oh-my-pi/pi-coding-agent/tool-discovery/mode"; -import * as bundledPiCodingAgentToolDiscoveryToolIndex from "@oh-my-pi/pi-coding-agent/tool-discovery/tool-index"; -import * as bundledPiCodingAgentTools from "@oh-my-pi/pi-coding-agent/tools"; -import * as bundledPiCodingAgentToolsAcpBridge from "@oh-my-pi/pi-coding-agent/tools/acp-bridge"; -import * as bundledPiCodingAgentToolsApproval from "@oh-my-pi/pi-coding-agent/tools/approval"; -import * as bundledPiCodingAgentToolsAsk from "@oh-my-pi/pi-coding-agent/tools/ask"; -import * as bundledPiCodingAgentToolsAstEdit from "@oh-my-pi/pi-coding-agent/tools/ast-edit"; -import * as bundledPiCodingAgentToolsAstGrep from "@oh-my-pi/pi-coding-agent/tools/ast-grep"; -import * as bundledPiCodingAgentToolsAutoGeneratedGuard from "@oh-my-pi/pi-coding-agent/tools/auto-generated-guard"; -import * as bundledPiCodingAgentToolsBash from "@oh-my-pi/pi-coding-agent/tools/bash"; -import * as bundledPiCodingAgentToolsBashCommandFixup from "@oh-my-pi/pi-coding-agent/tools/bash-command-fixup"; -import * as bundledPiCodingAgentToolsBashInteractive from "@oh-my-pi/pi-coding-agent/tools/bash-interactive"; -import * as bundledPiCodingAgentToolsBashInterceptor from "@oh-my-pi/pi-coding-agent/tools/bash-interceptor"; -import * as bundledPiCodingAgentToolsBashPtySelection from "@oh-my-pi/pi-coding-agent/tools/bash-pty-selection"; -import * as bundledPiCodingAgentToolsBashSkillUrls from "@oh-my-pi/pi-coding-agent/tools/bash-skill-urls"; -import * as bundledPiCodingAgentToolsBrowser from "@oh-my-pi/pi-coding-agent/tools/browser"; -import * as bundledPiCodingAgentToolsBuiltinNames from "@oh-my-pi/pi-coding-agent/tools/builtin-names"; -import * as bundledPiCodingAgentToolsCheckpoint from "@oh-my-pi/pi-coding-agent/tools/checkpoint"; -import * as bundledPiCodingAgentToolsConflictDetect from "@oh-my-pi/pi-coding-agent/tools/conflict-detect"; -import * as bundledPiCodingAgentToolsContext from "@oh-my-pi/pi-coding-agent/tools/context"; -import * as bundledPiCodingAgentToolsDebug from "@oh-my-pi/pi-coding-agent/tools/debug"; -import * as bundledPiCodingAgentToolsEval from "@oh-my-pi/pi-coding-agent/tools/eval"; -import * as bundledPiCodingAgentToolsEvalBackends from "@oh-my-pi/pi-coding-agent/tools/eval-backends"; -import * as bundledPiCodingAgentToolsEvalRender from "@oh-my-pi/pi-coding-agent/tools/eval-render"; -import * as bundledPiCodingAgentToolsFetch from "@oh-my-pi/pi-coding-agent/tools/fetch"; -import * as bundledPiCodingAgentToolsFileRecorder from "@oh-my-pi/pi-coding-agent/tools/file-recorder"; -import * as bundledPiCodingAgentToolsFsCacheInvalidation from "@oh-my-pi/pi-coding-agent/tools/fs-cache-invalidation"; -import * as bundledPiCodingAgentToolsGh from "@oh-my-pi/pi-coding-agent/tools/gh"; -import * as bundledPiCodingAgentToolsGhCacheInvalidation from "@oh-my-pi/pi-coding-agent/tools/gh-cache-invalidation"; -import * as bundledPiCodingAgentToolsGhFormat from "@oh-my-pi/pi-coding-agent/tools/gh-format"; -import * as bundledPiCodingAgentToolsGhRenderer from "@oh-my-pi/pi-coding-agent/tools/gh-renderer"; -import * as bundledPiCodingAgentToolsGithubCache from "@oh-my-pi/pi-coding-agent/tools/github-cache"; -import * as bundledPiCodingAgentToolsGlob from "@oh-my-pi/pi-coding-agent/tools/glob"; -import * as bundledPiCodingAgentToolsGrep from "@oh-my-pi/pi-coding-agent/tools/grep"; -import * as bundledPiCodingAgentToolsGroupedFileOutput from "@oh-my-pi/pi-coding-agent/tools/grouped-file-output"; -import * as bundledPiCodingAgentToolsImageGen from "@oh-my-pi/pi-coding-agent/tools/image-gen"; -import * as bundledPiCodingAgentToolsInspectImage from "@oh-my-pi/pi-coding-agent/tools/inspect-image"; -import * as bundledPiCodingAgentToolsInspectImageRenderer from "@oh-my-pi/pi-coding-agent/tools/inspect-image-renderer"; -import * as bundledPiCodingAgentToolsIrc from "@oh-my-pi/pi-coding-agent/tools/irc"; -import * as bundledPiCodingAgentToolsJob from "@oh-my-pi/pi-coding-agent/tools/job"; -import * as bundledPiCodingAgentToolsJsonTree from "@oh-my-pi/pi-coding-agent/tools/json-tree"; -import * as bundledPiCodingAgentToolsJtdToJsonSchema from "@oh-my-pi/pi-coding-agent/tools/jtd-to-json-schema"; -import * as bundledPiCodingAgentToolsJtdToTypescript from "@oh-my-pi/pi-coding-agent/tools/jtd-to-typescript"; -import * as bundledPiCodingAgentToolsJtdUtils from "@oh-my-pi/pi-coding-agent/tools/jtd-utils"; -import * as bundledPiCodingAgentToolsLearn from "@oh-my-pi/pi-coding-agent/tools/learn"; -import * as bundledPiCodingAgentToolsListLimit from "@oh-my-pi/pi-coding-agent/tools/list-limit"; -import * as bundledPiCodingAgentToolsManageSkill from "@oh-my-pi/pi-coding-agent/tools/manage-skill"; -import * as bundledPiCodingAgentToolsMatchLineFormat from "@oh-my-pi/pi-coding-agent/tools/match-line-format"; -import * as bundledPiCodingAgentToolsMemoryEdit from "@oh-my-pi/pi-coding-agent/tools/memory-edit"; -import * as bundledPiCodingAgentToolsMemoryRecall from "@oh-my-pi/pi-coding-agent/tools/memory-recall"; -import * as bundledPiCodingAgentToolsMemoryReflect from "@oh-my-pi/pi-coding-agent/tools/memory-reflect"; -import * as bundledPiCodingAgentToolsMemoryRender from "@oh-my-pi/pi-coding-agent/tools/memory-render"; -import * as bundledPiCodingAgentToolsMemoryRetain from "@oh-my-pi/pi-coding-agent/tools/memory-retain"; -import * as bundledPiCodingAgentToolsOutputMeta from "@oh-my-pi/pi-coding-agent/tools/output-meta"; -import * as bundledPiCodingAgentToolsOutputSchemaValidator from "@oh-my-pi/pi-coding-agent/tools/output-schema-validator"; -import * as bundledPiCodingAgentToolsPathUtils from "@oh-my-pi/pi-coding-agent/tools/path-utils"; -import * as bundledPiCodingAgentToolsPlanModeGuard from "@oh-my-pi/pi-coding-agent/tools/plan-mode-guard"; -import * as bundledPiCodingAgentToolsRead from "@oh-my-pi/pi-coding-agent/tools/read"; -import * as bundledPiCodingAgentToolsRenderUtils from "@oh-my-pi/pi-coding-agent/tools/render-utils"; -import * as bundledPiCodingAgentToolsRenderers from "@oh-my-pi/pi-coding-agent/tools/renderers"; -import * as bundledPiCodingAgentToolsReportToolIssue from "@oh-my-pi/pi-coding-agent/tools/report-tool-issue"; -import * as bundledPiCodingAgentToolsResolve from "@oh-my-pi/pi-coding-agent/tools/resolve"; -import * as bundledPiCodingAgentToolsReview from "@oh-my-pi/pi-coding-agent/tools/review"; -import * as bundledPiCodingAgentToolsSearchToolBm25 from "@oh-my-pi/pi-coding-agent/tools/search-tool-bm25"; -import * as bundledPiCodingAgentToolsSqliteReader from "@oh-my-pi/pi-coding-agent/tools/sqlite-reader"; -import * as bundledPiCodingAgentToolsSsh from "@oh-my-pi/pi-coding-agent/tools/ssh"; -import * as bundledPiCodingAgentToolsTodo from "@oh-my-pi/pi-coding-agent/tools/todo"; -import * as bundledPiCodingAgentToolsToolErrors from "@oh-my-pi/pi-coding-agent/tools/tool-errors"; -import * as bundledPiCodingAgentToolsToolResult from "@oh-my-pi/pi-coding-agent/tools/tool-result"; -import * as bundledPiCodingAgentToolsToolTimeouts from "@oh-my-pi/pi-coding-agent/tools/tool-timeouts"; -import * as bundledPiCodingAgentToolsTts from "@oh-my-pi/pi-coding-agent/tools/tts"; -import * as bundledPiCodingAgentToolsWrite from "@oh-my-pi/pi-coding-agent/tools/write"; -import * as bundledPiCodingAgentToolsYield from "@oh-my-pi/pi-coding-agent/tools/yield"; -import * as bundledPiCodingAgentTui from "@oh-my-pi/pi-coding-agent/tui"; -import * as bundledPiCodingAgentTuiCodeCell from "@oh-my-pi/pi-coding-agent/tui/code-cell"; -import * as bundledPiCodingAgentTuiFileList from "@oh-my-pi/pi-coding-agent/tui/file-list"; -import * as bundledPiCodingAgentTuiHyperlink from "@oh-my-pi/pi-coding-agent/tui/hyperlink"; -import * as bundledPiCodingAgentTuiOutputBlock from "@oh-my-pi/pi-coding-agent/tui/output-block"; -import * as bundledPiCodingAgentTuiStatusLine from "@oh-my-pi/pi-coding-agent/tui/status-line"; -import * as bundledPiCodingAgentTuiTreeList from "@oh-my-pi/pi-coding-agent/tui/tree-list"; -import * as bundledPiCodingAgentTuiTypes from "@oh-my-pi/pi-coding-agent/tui/types"; -import * as bundledPiCodingAgentTuiUtils from "@oh-my-pi/pi-coding-agent/tui/utils"; -import * as bundledPiCodingAgentTuiWidthAwareText from "@oh-my-pi/pi-coding-agent/tui/width-aware-text"; -import * as bundledPiCodingAgentUtilsActiveRepoContext from "@oh-my-pi/pi-coding-agent/utils/active-repo-context"; -import * as bundledPiCodingAgentUtilsBlockContext from "@oh-my-pi/pi-coding-agent/utils/block-context"; -import * as bundledPiCodingAgentUtilsChangelog from "@oh-my-pi/pi-coding-agent/utils/changelog"; -import * as bundledPiCodingAgentUtilsClipboard from "@oh-my-pi/pi-coding-agent/utils/clipboard"; -import * as bundledPiCodingAgentUtilsCommandArgs from "@oh-my-pi/pi-coding-agent/utils/command-args"; -import * as bundledPiCodingAgentUtilsCommitMessageGenerator from "@oh-my-pi/pi-coding-agent/utils/commit-message-generator"; -import * as bundledPiCodingAgentUtilsEditMode from "@oh-my-pi/pi-coding-agent/utils/edit-mode"; -import * as bundledPiCodingAgentUtilsEnhancedPaste from "@oh-my-pi/pi-coding-agent/utils/enhanced-paste"; -import * as bundledPiCodingAgentUtilsEventBus from "@oh-my-pi/pi-coding-agent/utils/event-bus"; -import * as bundledPiCodingAgentUtilsExternalEditor from "@oh-my-pi/pi-coding-agent/utils/external-editor"; -import * as bundledPiCodingAgentUtilsFileDisplayMode from "@oh-my-pi/pi-coding-agent/utils/file-display-mode"; -import * as bundledPiCodingAgentUtilsFileMentions from "@oh-my-pi/pi-coding-agent/utils/file-mentions"; -import * as bundledPiCodingAgentUtilsGit from "@oh-my-pi/pi-coding-agent/utils/git"; -import * as bundledPiCodingAgentUtilsImageLoading from "@oh-my-pi/pi-coding-agent/utils/image-loading"; -import * as bundledPiCodingAgentUtilsImageResize from "@oh-my-pi/pi-coding-agent/utils/image-resize"; -import * as bundledPiCodingAgentUtilsImageVisionFallback from "@oh-my-pi/pi-coding-agent/utils/image-vision-fallback"; -import * as bundledPiCodingAgentUtilsIpc from "@oh-my-pi/pi-coding-agent/utils/ipc"; -import * as bundledPiCodingAgentUtilsJj from "@oh-my-pi/pi-coding-agent/utils/jj"; -import * as bundledPiCodingAgentUtilsLangFromPath from "@oh-my-pi/pi-coding-agent/utils/lang-from-path"; -import * as bundledPiCodingAgentUtilsMarkit from "@oh-my-pi/pi-coding-agent/utils/markit"; -import * as bundledPiCodingAgentUtilsMarkitCache from "@oh-my-pi/pi-coding-agent/utils/markit-cache"; -import * as bundledPiCodingAgentUtilsMupdfWasmEmbed from "@oh-my-pi/pi-coding-agent/utils/mupdf-wasm-embed"; -import * as bundledPiCodingAgentUtilsOpen from "@oh-my-pi/pi-coding-agent/utils/open"; -import * as bundledPiCodingAgentUtilsPromptPath from "@oh-my-pi/pi-coding-agent/utils/prompt-path"; -import * as bundledPiCodingAgentUtilsQrcode from "@oh-my-pi/pi-coding-agent/utils/qrcode"; -import * as bundledPiCodingAgentUtilsSessionColor from "@oh-my-pi/pi-coding-agent/utils/session-color"; -import * as bundledPiCodingAgentUtilsShellSnapshot from "@oh-my-pi/pi-coding-agent/utils/shell-snapshot"; -import * as bundledPiCodingAgentUtilsSixel from "@oh-my-pi/pi-coding-agent/utils/sixel"; -import * as bundledPiCodingAgentUtilsThinkingDisplay from "@oh-my-pi/pi-coding-agent/utils/thinking-display"; -import * as bundledPiCodingAgentUtilsTitleGenerator from "@oh-my-pi/pi-coding-agent/utils/title-generator"; -import * as bundledPiCodingAgentUtilsToolChoice from "@oh-my-pi/pi-coding-agent/utils/tool-choice"; -import * as bundledPiCodingAgentUtilsToolsManager from "@oh-my-pi/pi-coding-agent/utils/tools-manager"; -import * as bundledPiCodingAgentUtilsTurndown from "@oh-my-pi/pi-coding-agent/utils/turndown"; -import * as bundledPiCodingAgentUtilsZip from "@oh-my-pi/pi-coding-agent/utils/zip"; -import * as bundledPiCodingAgentWebKagi from "@oh-my-pi/pi-coding-agent/web/kagi"; -import * as bundledPiCodingAgentWebParallel from "@oh-my-pi/pi-coding-agent/web/parallel"; -import * as bundledPiCodingAgentWebScrapers from "@oh-my-pi/pi-coding-agent/web/scrapers"; -import * as bundledPiCodingAgentWebScrapersArtifacthub from "@oh-my-pi/pi-coding-agent/web/scrapers/artifacthub"; -import * as bundledPiCodingAgentWebScrapersArxiv from "@oh-my-pi/pi-coding-agent/web/scrapers/arxiv"; -import * as bundledPiCodingAgentWebScrapersAur from "@oh-my-pi/pi-coding-agent/web/scrapers/aur"; -import * as bundledPiCodingAgentWebScrapersBiorxiv from "@oh-my-pi/pi-coding-agent/web/scrapers/biorxiv"; -import * as bundledPiCodingAgentWebScrapersBluesky from "@oh-my-pi/pi-coding-agent/web/scrapers/bluesky"; -import * as bundledPiCodingAgentWebScrapersBrew from "@oh-my-pi/pi-coding-agent/web/scrapers/brew"; -import * as bundledPiCodingAgentWebScrapersCheatsh from "@oh-my-pi/pi-coding-agent/web/scrapers/cheatsh"; -import * as bundledPiCodingAgentWebScrapersChocolatey from "@oh-my-pi/pi-coding-agent/web/scrapers/chocolatey"; -import * as bundledPiCodingAgentWebScrapersChoosealicense from "@oh-my-pi/pi-coding-agent/web/scrapers/choosealicense"; -import * as bundledPiCodingAgentWebScrapersCisaKev from "@oh-my-pi/pi-coding-agent/web/scrapers/cisa-kev"; -import * as bundledPiCodingAgentWebScrapersClojars from "@oh-my-pi/pi-coding-agent/web/scrapers/clojars"; -import * as bundledPiCodingAgentWebScrapersCoingecko from "@oh-my-pi/pi-coding-agent/web/scrapers/coingecko"; -import * as bundledPiCodingAgentWebScrapersCratesIo from "@oh-my-pi/pi-coding-agent/web/scrapers/crates-io"; -import * as bundledPiCodingAgentWebScrapersCrossref from "@oh-my-pi/pi-coding-agent/web/scrapers/crossref"; -import * as bundledPiCodingAgentWebScrapersDevto from "@oh-my-pi/pi-coding-agent/web/scrapers/devto"; -import * as bundledPiCodingAgentWebScrapersDiscogs from "@oh-my-pi/pi-coding-agent/web/scrapers/discogs"; -import * as bundledPiCodingAgentWebScrapersDiscourse from "@oh-my-pi/pi-coding-agent/web/scrapers/discourse"; -import * as bundledPiCodingAgentWebScrapersDockerhub from "@oh-my-pi/pi-coding-agent/web/scrapers/dockerhub"; -import * as bundledPiCodingAgentWebScrapersDocsRs from "@oh-my-pi/pi-coding-agent/web/scrapers/docs-rs"; -import * as bundledPiCodingAgentWebScrapersFdroid from "@oh-my-pi/pi-coding-agent/web/scrapers/fdroid"; -import * as bundledPiCodingAgentWebScrapersFirefoxAddons from "@oh-my-pi/pi-coding-agent/web/scrapers/firefox-addons"; -import * as bundledPiCodingAgentWebScrapersFlathub from "@oh-my-pi/pi-coding-agent/web/scrapers/flathub"; -import * as bundledPiCodingAgentWebScrapersGithub from "@oh-my-pi/pi-coding-agent/web/scrapers/github"; -import * as bundledPiCodingAgentWebScrapersGithubGist from "@oh-my-pi/pi-coding-agent/web/scrapers/github-gist"; -import * as bundledPiCodingAgentWebScrapersGitlab from "@oh-my-pi/pi-coding-agent/web/scrapers/gitlab"; -import * as bundledPiCodingAgentWebScrapersGoPkg from "@oh-my-pi/pi-coding-agent/web/scrapers/go-pkg"; -import * as bundledPiCodingAgentWebScrapersHackage from "@oh-my-pi/pi-coding-agent/web/scrapers/hackage"; -import * as bundledPiCodingAgentWebScrapersHackernews from "@oh-my-pi/pi-coding-agent/web/scrapers/hackernews"; -import * as bundledPiCodingAgentWebScrapersHex from "@oh-my-pi/pi-coding-agent/web/scrapers/hex"; -import * as bundledPiCodingAgentWebScrapersHuggingface from "@oh-my-pi/pi-coding-agent/web/scrapers/huggingface"; -import * as bundledPiCodingAgentWebScrapersIacr from "@oh-my-pi/pi-coding-agent/web/scrapers/iacr"; -import * as bundledPiCodingAgentWebScrapersJetbrainsMarketplace from "@oh-my-pi/pi-coding-agent/web/scrapers/jetbrains-marketplace"; -import * as bundledPiCodingAgentWebScrapersLemmy from "@oh-my-pi/pi-coding-agent/web/scrapers/lemmy"; -import * as bundledPiCodingAgentWebScrapersLobsters from "@oh-my-pi/pi-coding-agent/web/scrapers/lobsters"; -import * as bundledPiCodingAgentWebScrapersMastodon from "@oh-my-pi/pi-coding-agent/web/scrapers/mastodon"; -import * as bundledPiCodingAgentWebScrapersMaven from "@oh-my-pi/pi-coding-agent/web/scrapers/maven"; -import * as bundledPiCodingAgentWebScrapersMdn from "@oh-my-pi/pi-coding-agent/web/scrapers/mdn"; -import * as bundledPiCodingAgentWebScrapersMetacpan from "@oh-my-pi/pi-coding-agent/web/scrapers/metacpan"; -import * as bundledPiCodingAgentWebScrapersMusicbrainz from "@oh-my-pi/pi-coding-agent/web/scrapers/musicbrainz"; -import * as bundledPiCodingAgentWebScrapersNpm from "@oh-my-pi/pi-coding-agent/web/scrapers/npm"; -import * as bundledPiCodingAgentWebScrapersNuget from "@oh-my-pi/pi-coding-agent/web/scrapers/nuget"; -import * as bundledPiCodingAgentWebScrapersNvd from "@oh-my-pi/pi-coding-agent/web/scrapers/nvd"; -import * as bundledPiCodingAgentWebScrapersOllama from "@oh-my-pi/pi-coding-agent/web/scrapers/ollama"; -import * as bundledPiCodingAgentWebScrapersOpenVsx from "@oh-my-pi/pi-coding-agent/web/scrapers/open-vsx"; -import * as bundledPiCodingAgentWebScrapersOpencorporates from "@oh-my-pi/pi-coding-agent/web/scrapers/opencorporates"; -import * as bundledPiCodingAgentWebScrapersOpenlibrary from "@oh-my-pi/pi-coding-agent/web/scrapers/openlibrary"; -import * as bundledPiCodingAgentWebScrapersOrcid from "@oh-my-pi/pi-coding-agent/web/scrapers/orcid"; -import * as bundledPiCodingAgentWebScrapersOsv from "@oh-my-pi/pi-coding-agent/web/scrapers/osv"; -import * as bundledPiCodingAgentWebScrapersPackagist from "@oh-my-pi/pi-coding-agent/web/scrapers/packagist"; -import * as bundledPiCodingAgentWebScrapersPubDev from "@oh-my-pi/pi-coding-agent/web/scrapers/pub-dev"; -import * as bundledPiCodingAgentWebScrapersPubmed from "@oh-my-pi/pi-coding-agent/web/scrapers/pubmed"; -import * as bundledPiCodingAgentWebScrapersPypi from "@oh-my-pi/pi-coding-agent/web/scrapers/pypi"; -import * as bundledPiCodingAgentWebScrapersRawg from "@oh-my-pi/pi-coding-agent/web/scrapers/rawg"; -import * as bundledPiCodingAgentWebScrapersReadthedocs from "@oh-my-pi/pi-coding-agent/web/scrapers/readthedocs"; -import * as bundledPiCodingAgentWebScrapersReddit from "@oh-my-pi/pi-coding-agent/web/scrapers/reddit"; -import * as bundledPiCodingAgentWebScrapersRepology from "@oh-my-pi/pi-coding-agent/web/scrapers/repology"; -import * as bundledPiCodingAgentWebScrapersRfc from "@oh-my-pi/pi-coding-agent/web/scrapers/rfc"; -import * as bundledPiCodingAgentWebScrapersRubygems from "@oh-my-pi/pi-coding-agent/web/scrapers/rubygems"; -import * as bundledPiCodingAgentWebScrapersSearchcode from "@oh-my-pi/pi-coding-agent/web/scrapers/searchcode"; -import * as bundledPiCodingAgentWebScrapersSecEdgar from "@oh-my-pi/pi-coding-agent/web/scrapers/sec-edgar"; -import * as bundledPiCodingAgentWebScrapersSemanticScholar from "@oh-my-pi/pi-coding-agent/web/scrapers/semantic-scholar"; -import * as bundledPiCodingAgentWebScrapersSnapcraft from "@oh-my-pi/pi-coding-agent/web/scrapers/snapcraft"; -import * as bundledPiCodingAgentWebScrapersSourcegraph from "@oh-my-pi/pi-coding-agent/web/scrapers/sourcegraph"; -import * as bundledPiCodingAgentWebScrapersSpdx from "@oh-my-pi/pi-coding-agent/web/scrapers/spdx"; -import * as bundledPiCodingAgentWebScrapersSpotify from "@oh-my-pi/pi-coding-agent/web/scrapers/spotify"; -import * as bundledPiCodingAgentWebScrapersStackoverflow from "@oh-my-pi/pi-coding-agent/web/scrapers/stackoverflow"; -import * as bundledPiCodingAgentWebScrapersTerraform from "@oh-my-pi/pi-coding-agent/web/scrapers/terraform"; -import * as bundledPiCodingAgentWebScrapersTldr from "@oh-my-pi/pi-coding-agent/web/scrapers/tldr"; -import * as bundledPiCodingAgentWebScrapersTwitter from "@oh-my-pi/pi-coding-agent/web/scrapers/twitter"; -import * as bundledPiCodingAgentWebScrapersTypes from "@oh-my-pi/pi-coding-agent/web/scrapers/types"; -import * as bundledPiCodingAgentWebScrapersUtils from "@oh-my-pi/pi-coding-agent/web/scrapers/utils"; -import * as bundledPiCodingAgentWebScrapersVimeo from "@oh-my-pi/pi-coding-agent/web/scrapers/vimeo"; -import * as bundledPiCodingAgentWebScrapersVscodeMarketplace from "@oh-my-pi/pi-coding-agent/web/scrapers/vscode-marketplace"; -import * as bundledPiCodingAgentWebScrapersW3c from "@oh-my-pi/pi-coding-agent/web/scrapers/w3c"; -import * as bundledPiCodingAgentWebScrapersWikidata from "@oh-my-pi/pi-coding-agent/web/scrapers/wikidata"; -import * as bundledPiCodingAgentWebScrapersWikipedia from "@oh-my-pi/pi-coding-agent/web/scrapers/wikipedia"; -import * as bundledPiCodingAgentWebScrapersYoutube from "@oh-my-pi/pi-coding-agent/web/scrapers/youtube"; -import * as bundledPiCodingAgentWebSearch from "@oh-my-pi/pi-coding-agent/web/search"; -import * as bundledPiCodingAgentWebSearchProvider from "@oh-my-pi/pi-coding-agent/web/search/provider"; -import * as bundledPiCodingAgentWebSearchProvidersAnthropic from "@oh-my-pi/pi-coding-agent/web/search/providers/anthropic"; -import * as bundledPiCodingAgentWebSearchProvidersBase from "@oh-my-pi/pi-coding-agent/web/search/providers/base"; -import * as bundledPiCodingAgentWebSearchProvidersBrave from "@oh-my-pi/pi-coding-agent/web/search/providers/brave"; -import * as bundledPiCodingAgentWebSearchProvidersCodex from "@oh-my-pi/pi-coding-agent/web/search/providers/codex"; -import * as bundledPiCodingAgentWebSearchProvidersDuckduckgo from "@oh-my-pi/pi-coding-agent/web/search/providers/duckduckgo"; -import * as bundledPiCodingAgentWebSearchProvidersExa from "@oh-my-pi/pi-coding-agent/web/search/providers/exa"; -import * as bundledPiCodingAgentWebSearchProvidersFirecrawl from "@oh-my-pi/pi-coding-agent/web/search/providers/firecrawl"; -import * as bundledPiCodingAgentWebSearchProvidersGemini from "@oh-my-pi/pi-coding-agent/web/search/providers/gemini"; -import * as bundledPiCodingAgentWebSearchProvidersJina from "@oh-my-pi/pi-coding-agent/web/search/providers/jina"; -import * as bundledPiCodingAgentWebSearchProvidersKagi from "@oh-my-pi/pi-coding-agent/web/search/providers/kagi"; -import * as bundledPiCodingAgentWebSearchProvidersKimi from "@oh-my-pi/pi-coding-agent/web/search/providers/kimi"; -import * as bundledPiCodingAgentWebSearchProvidersParallel from "@oh-my-pi/pi-coding-agent/web/search/providers/parallel"; -import * as bundledPiCodingAgentWebSearchProvidersPerplexity from "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity"; -import * as bundledPiCodingAgentWebSearchProvidersPerplexityAuth from "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity-auth"; -import * as bundledPiCodingAgentWebSearchProvidersSearxng from "@oh-my-pi/pi-coding-agent/web/search/providers/searxng"; -import * as bundledPiCodingAgentWebSearchProvidersSynthetic from "@oh-my-pi/pi-coding-agent/web/search/providers/synthetic"; -import * as bundledPiCodingAgentWebSearchProvidersTavily from "@oh-my-pi/pi-coding-agent/web/search/providers/tavily"; -import * as bundledPiCodingAgentWebSearchProvidersTinyfish from "@oh-my-pi/pi-coding-agent/web/search/providers/tinyfish"; -import * as bundledPiCodingAgentWebSearchProvidersUtils from "@oh-my-pi/pi-coding-agent/web/search/providers/utils"; -import * as bundledPiCodingAgentWebSearchProvidersXai from "@oh-my-pi/pi-coding-agent/web/search/providers/xai"; -import * as bundledPiCodingAgentWebSearchProvidersZai from "@oh-my-pi/pi-coding-agent/web/search/providers/zai"; -import * as bundledPiCodingAgentWebSearchRender from "@oh-my-pi/pi-coding-agent/web/search/render"; -import * as bundledPiCodingAgentWebSearchTypes from "@oh-my-pi/pi-coding-agent/web/search/types"; -import * as bundledPiCodingAgentWebSearchUtils from "@oh-my-pi/pi-coding-agent/web/search/utils"; -import * as bundledPiNatives from "@oh-my-pi/pi-natives"; -import * as bundledPiTui from "@oh-my-pi/pi-tui"; -import * as bundledPiTuiComponentsBox from "@oh-my-pi/pi-tui/components/box"; -import * as bundledPiTuiComponentsCancellableLoader from "@oh-my-pi/pi-tui/components/cancellable-loader"; -import * as bundledPiTuiComponentsEditor from "@oh-my-pi/pi-tui/components/editor"; -import * as bundledPiTuiComponentsImage from "@oh-my-pi/pi-tui/components/image"; -import * as bundledPiTuiComponentsInput from "@oh-my-pi/pi-tui/components/input"; -import * as bundledPiTuiComponentsLoader from "@oh-my-pi/pi-tui/components/loader"; -import * as bundledPiTuiComponentsMarkdown from "@oh-my-pi/pi-tui/components/markdown"; -import * as bundledPiTuiComponentsScrollView from "@oh-my-pi/pi-tui/components/scroll-view"; -import * as bundledPiTuiComponentsSelectList from "@oh-my-pi/pi-tui/components/select-list"; -import * as bundledPiTuiComponentsSettingsList from "@oh-my-pi/pi-tui/components/settings-list"; -import * as bundledPiTuiComponentsSpacer from "@oh-my-pi/pi-tui/components/spacer"; -import * as bundledPiTuiComponentsTabBar from "@oh-my-pi/pi-tui/components/tab-bar"; -import * as bundledPiTuiComponentsText from "@oh-my-pi/pi-tui/components/text"; -import * as bundledPiTuiComponentsTruncatedText from "@oh-my-pi/pi-tui/components/truncated-text"; -import * as bundledPiUtils from "@oh-my-pi/pi-utils"; -import * as bundledPiAi from "../legacy-pi-ai-shim"; -import * as bundledPiCodingAgent from "../legacy-pi-coding-agent-shim"; -import * as bundledTypeBoxShim from "../typebox"; - -/** - * Canonical specifier → live module namespace. Keys MUST match the right-hand - * side of `bundledRegistryVirtualSpecifier(...)` calls in - * `legacy-pi-compat.ts`; the synthesizer enumerates each namespace's own - * enumerable exports at extension load time. The companion - * `legacy-pi-bundled-keys.ts` mirrors `Object.keys(BUNDLED_PI_REGISTRY)` and - * is statically imported by `legacy-pi-compat.ts` to seed the override map - * without paying the cascade above. - */ -export const BUNDLED_PI_REGISTRY: Readonly>>> = { - "@oh-my-pi/pi-agent-core": bundledPiAgentCore as unknown as Readonly>, - "@oh-my-pi/pi-agent-core/compaction": bundledPiAgentCoreCompaction as unknown as Readonly>, - "@oh-my-pi/pi-agent-core/compaction/branch-summarization": - bundledPiAgentCoreCompactionBranchSummarization as unknown as Readonly>, - "@oh-my-pi/pi-agent-core/compaction/compaction": bundledPiAgentCoreCompactionCompaction as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/entries": bundledPiAgentCoreCompactionEntries as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/errors": bundledPiAgentCoreCompactionErrors as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/messages": bundledPiAgentCoreCompactionMessages as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/openai": bundledPiAgentCoreCompactionOpenai as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/pruning": bundledPiAgentCoreCompactionPruning as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/shake": bundledPiAgentCoreCompactionShake as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-agent-core/compaction/tool-protection": - bundledPiAgentCoreCompactionToolProtection as unknown as Readonly>, - "@oh-my-pi/pi-agent-core/compaction/utils": bundledPiAgentCoreCompactionUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai": bundledPiAi as unknown as Readonly>, - "@oh-my-pi/pi-ai/error": bundledPiAiError as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-broker": bundledPiAiAuthBroker as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-gateway": bundledPiAiAuthGateway as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/harmony-leak": bundledPiAiUtilsHarmonyLeak as unknown as Readonly>, - "@oh-my-pi/pi-ai/dialect": bundledPiAiDialect as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth": bundledPiAiOauth as unknown as Readonly>, - "@oh-my-pi/pi-ai/registry": bundledPiAiRegistry as unknown as Readonly>, - "@oh-my-pi/pi-ai/registry/oauth": bundledPiAiRegistryOauth as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema": bundledPiAiUtilsSchema as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-broker/client": bundledPiAiAuthBrokerClient as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-broker/discover": bundledPiAiAuthBrokerDiscover as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/auth-broker/refresher": bundledPiAiAuthBrokerRefresher as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/auth-broker/remote-store": bundledPiAiAuthBrokerRemoteStore as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/auth-broker/server": bundledPiAiAuthBrokerServer as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-broker/snapshot-cache": bundledPiAiAuthBrokerSnapshotCache as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/auth-broker/types": bundledPiAiAuthBrokerTypes as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-broker/wire-schemas": bundledPiAiAuthBrokerWireSchemas as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/auth-gateway/http": bundledPiAiAuthGatewayHttp as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-gateway/server": bundledPiAiAuthGatewayServer as unknown as Readonly>, - "@oh-my-pi/pi-ai/auth-gateway/types": bundledPiAiAuthGatewayTypes as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/amazon-bedrock": bundledPiAiProvidersAmazonBedrock as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/anthropic-client": bundledPiAiProvidersAnthropicClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/anthropic-messages-server-schema": - bundledPiAiProvidersAnthropicMessagesServerSchema as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/anthropic-messages-server": - bundledPiAiProvidersAnthropicMessagesServer as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/anthropic-wire": bundledPiAiProvidersAnthropicWire as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/anthropic": bundledPiAiProvidersAnthropic as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/aws-credentials": bundledPiAiProvidersAwsCredentials as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/aws-eventstream": bundledPiAiProvidersAwsEventstream as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/aws-sigv4": bundledPiAiProvidersAwsSigv4 as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/azure-openai-responses": bundledPiAiProvidersAzureOpenaiResponses as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/cursor": bundledPiAiProvidersCursor as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/devin": bundledPiAiProvidersDevin as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/error-message": bundledPiAiProvidersErrorMessage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/github-copilot-headers": bundledPiAiProvidersGithubCopilotHeaders as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/gitlab-duo-workflow": bundledPiAiProvidersGitlabDuoWorkflow as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/gitlab-duo": bundledPiAiProvidersGitlabDuo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google-auth": bundledPiAiProvidersGoogleAuth as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google-gemini-cli": bundledPiAiProvidersGoogleGeminiCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google-shared": bundledPiAiProvidersGoogleShared as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google-types": bundledPiAiProvidersGoogleTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google-vertex": bundledPiAiProvidersGoogleVertex as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/google": bundledPiAiProvidersGoogle as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/grammar": bundledPiAiProvidersGrammar as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/kimi": bundledPiAiProvidersKimi as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/mock": bundledPiAiProvidersMock as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/ollama": bundledPiAiProvidersOllama as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-anthropic-shim": bundledPiAiProvidersOpenaiAnthropicShim as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-chat-server-schema": - bundledPiAiProvidersOpenaiChatServerSchema as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-chat-server": bundledPiAiProvidersOpenaiChatServer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-chat-wire": bundledPiAiProvidersOpenaiChatWire as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-codex-responses": bundledPiAiProvidersOpenaiCodexResponses as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-completions": bundledPiAiProvidersOpenaiCompletions as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-reasoning-fallback": - bundledPiAiProvidersOpenaiReasoningFallback as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-responses-server-schema": - bundledPiAiProvidersOpenaiResponsesServerSchema as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-responses-server": - bundledPiAiProvidersOpenaiResponsesServer as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-responses-wire": bundledPiAiProvidersOpenaiResponsesWire as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-responses": bundledPiAiProvidersOpenaiResponses as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-shared": bundledPiAiProvidersOpenaiShared as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/pi-native-client": bundledPiAiProvidersPiNativeClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/pi-native-server": bundledPiAiProvidersPiNativeServer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/register-builtins": bundledPiAiProvidersRegisterBuiltins as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/synthetic": bundledPiAiProvidersSynthetic as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/transform-messages": bundledPiAiProvidersTransformMessages as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/vision-guard": bundledPiAiProvidersVisionGuard as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/providers/openai-codex/request-transformer": - bundledPiAiProvidersOpenaiCodexRequestTransformer as unknown as Readonly>, - "@oh-my-pi/pi-ai/providers/openai-codex/response-handler": - bundledPiAiProvidersOpenaiCodexResponseHandler as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/claude": bundledPiAiUsageClaude as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/gemini": bundledPiAiUsageGemini as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/github-copilot": bundledPiAiUsageGithubCopilot as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/usage/google-antigravity": bundledPiAiUsageGoogleAntigravity as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/usage/kimi": bundledPiAiUsageKimi as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/minimax-code": bundledPiAiUsageMinimaxCode as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/ollama": bundledPiAiUsageOllama as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/openai-codex-base-url": bundledPiAiUsageOpenaiCodexBaseUrl as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/usage/openai-codex-reset": bundledPiAiUsageOpenaiCodexReset as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/usage/openai-codex": bundledPiAiUsageOpenaiCodex as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/opencode-go": bundledPiAiUsageOpencodeGo as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/shared": bundledPiAiUsageShared as unknown as Readonly>, - "@oh-my-pi/pi-ai/usage/zai": bundledPiAiUsageZai as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/abort": bundledPiAiUtilsAbort as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/anthropic-auth": bundledPiAiUtilsAnthropicAuth as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/block-symbols": bundledPiAiUtilsBlockSymbols as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/deterministic-id": bundledPiAiUtilsDeterministicId as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/empty-completion-retry": bundledPiAiUtilsEmptyCompletionRetry as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/event-stream": bundledPiAiUtilsEventStream as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/foundry": bundledPiAiUtilsFoundry as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/google-validation": bundledPiAiUtilsGoogleValidation as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/http-inspector": bundledPiAiUtilsHttpInspector as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/idle-iterator": bundledPiAiUtilsIdleIterator as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/openai-http": bundledPiAiUtilsOpenaiHttp as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/openrouter-headers": bundledPiAiUtilsOpenrouterHeaders as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/parse-bind": bundledPiAiUtilsParseBind as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/provider-response": bundledPiAiUtilsProviderResponse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/proxy": bundledPiAiUtilsProxy as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/request-debug": bundledPiAiUtilsRequestDebug as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/retry-after": bundledPiAiUtilsRetryAfter as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/retry": bundledPiAiUtilsRetry as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/sdk-stream-timeout": bundledPiAiUtilsSdkStreamTimeout as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/sse-debug": bundledPiAiUtilsSseDebug as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/stream-markup-healing": bundledPiAiUtilsStreamMarkupHealing as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/thinking-loop": bundledPiAiUtilsThinkingLoop as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/tool-choice": bundledPiAiUtilsToolChoice as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/validation": bundledPiAiUtilsValidation as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/anthropic": bundledPiAiOauthAnthropic as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/callback-server": bundledPiAiOauthCallbackServer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/cursor": bundledPiAiOauthCursor as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/devin": bundledPiAiOauthDevin as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/github-copilot": bundledPiAiOauthGithubCopilot as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/gitlab-duo-workflow": bundledPiAiOauthGitlabDuoWorkflow as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/gitlab-duo": bundledPiAiOauthGitlabDuo as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/google-antigravity": bundledPiAiOauthGoogleAntigravity as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/google-gemini-cli": bundledPiAiOauthGoogleGeminiCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/google-oauth-shared": bundledPiAiOauthGoogleOauthShared as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/oauth/kimi": bundledPiAiOauthKimi as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/minimax-code": bundledPiAiOauthMinimaxCode as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/openai-codex": bundledPiAiOauthOpenaiCodex as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/opencode": bundledPiAiOauthOpencode as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/perplexity": bundledPiAiOauthPerplexity as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/pkce": bundledPiAiOauthPkce as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/types": bundledPiAiOauthTypes as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/wafer": bundledPiAiOauthWafer as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/xai-oauth": bundledPiAiOauthXaiOauth as unknown as Readonly>, - "@oh-my-pi/pi-ai/oauth/xiaomi": bundledPiAiOauthXiaomi as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/adapt": bundledPiAiUtilsSchemaAdapt as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/compatibility": bundledPiAiUtilsSchemaCompatibility as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/dereference": bundledPiAiUtilsSchemaDereference as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/draft": bundledPiAiUtilsSchemaDraft as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/equality": bundledPiAiUtilsSchemaEquality as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/fields": bundledPiAiUtilsSchemaFields as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/json-schema-validator": - bundledPiAiUtilsSchemaJsonSchemaValidator as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/meta-validator": bundledPiAiUtilsSchemaMetaValidator as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/normalize": bundledPiAiUtilsSchemaNormalize as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/spill": bundledPiAiUtilsSchemaSpill as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/stamps": bundledPiAiUtilsSchemaStamps as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/strict-tool-validation": - bundledPiAiUtilsSchemaStrictToolValidation as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/types": bundledPiAiUtilsSchemaTypes as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/typescript": bundledPiAiUtilsSchemaTypescript as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-ai/utils/schema/wire": bundledPiAiUtilsSchemaWire as unknown as Readonly>, - "@oh-my-pi/pi-ai/utils/schema/zod-decontaminate": bundledPiAiUtilsSchemaZodDecontaminate as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent": bundledPiCodingAgent as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/async": bundledPiCodingAgentAsync as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/autoresearch": bundledPiCodingAgentAutoresearch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability": bundledPiCodingAgentCapability as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures": bundledPiCodingAgentCliGalleryFixtures as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit": bundledPiCodingAgentCommit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic": bundledPiCodingAgentCommitAgentic as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools": bundledPiCodingAgentCommitAgenticTools as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/analysis": bundledPiCodingAgentCommitAnalysis as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/changelog": bundledPiCodingAgentCommitChangelog as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/map-reduce": bundledPiCodingAgentCommitMapReduce as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/dap": bundledPiCodingAgentDap as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/debug": bundledPiCodingAgentDebug as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery": bundledPiCodingAgentDiscovery as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/edit": bundledPiCodingAgentEdit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/exa": bundledPiCodingAgentExa as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/export/html": bundledPiCodingAgentExportHtml as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands": - bundledPiCodingAgentExtensibilityCustomCommands as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/ci-green": - bundledPiCodingAgentExtensibilityCustomCommandsBundledCiGreen as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/bundled/review": - bundledPiCodingAgentExtensibilityCustomCommandsBundledReview as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools": - bundledPiCodingAgentExtensibilityCustomTools as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions": - bundledPiCodingAgentExtensibilityExtensions as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/hooks": bundledPiCodingAgentExtensibilityHooks as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/plugins": bundledPiCodingAgentExtensibilityPlugins as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace": - bundledPiCodingAgentExtensibilityPluginsMarketplace as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls": bundledPiCodingAgentInternalUrls as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval": bundledPiCodingAgentEval as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp": bundledPiCodingAgentLsp as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/clients": bundledPiCodingAgentLspClients as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/markit": bundledPiCodingAgentMarkit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/mcp": bundledPiCodingAgentMcp as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/mcp/transports": bundledPiCodingAgentMcpTransports as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/memories": bundledPiCodingAgentMemories as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/memory-backend": bundledPiCodingAgentMemoryBackend as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight": bundledPiCodingAgentHindsight as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes": bundledPiCodingAgentModes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/acp": bundledPiCodingAgentModesAcp as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components": bundledPiCodingAgentModesComponents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/components/extensions": - bundledPiCodingAgentModesComponentsExtensions as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line": - bundledPiCodingAgentModesComponentsStatusLine as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/setup-wizard": bundledPiCodingAgentModesSetupWizard as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/theme/defaults": bundledPiCodingAgentModesThemeDefaults as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/secrets": bundledPiCodingAgentSecrets as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/stt": bundledPiCodingAgentStt as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/task": bundledPiCodingAgentTask as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools": bundledPiCodingAgentTools as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tui": bundledPiCodingAgentTui as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers": bundledPiCodingAgentWebScrapers as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search": bundledPiCodingAgentWebSearch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/async/job-manager": bundledPiCodingAgentAsyncJobManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/dashboard": bundledPiCodingAgentAutoresearchDashboard as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/git": bundledPiCodingAgentAutoresearchGit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/helpers": bundledPiCodingAgentAutoresearchHelpers as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/state": bundledPiCodingAgentAutoresearchState as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/storage": bundledPiCodingAgentAutoresearchStorage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/types": bundledPiCodingAgentAutoresearchTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/autoresearch/tools/init-experiment": - bundledPiCodingAgentAutoresearchToolsInitExperiment as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/autoresearch/tools/log-experiment": - bundledPiCodingAgentAutoresearchToolsLogExperiment as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/autoresearch/tools/run-experiment": - bundledPiCodingAgentAutoresearchToolsRunExperiment as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/autoresearch/tools/update-notes": - bundledPiCodingAgentAutoresearchToolsUpdateNotes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/context-file": - bundledPiCodingAgentCapabilityContextFile as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/extension-module": - bundledPiCodingAgentCapabilityExtensionModule as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/extension": bundledPiCodingAgentCapabilityExtension as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/fs": bundledPiCodingAgentCapabilityFs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/hook": bundledPiCodingAgentCapabilityHook as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/instruction": bundledPiCodingAgentCapabilityInstruction as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/mcp": bundledPiCodingAgentCapabilityMcp as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/prompt": bundledPiCodingAgentCapabilityPrompt as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/rule-buckets": - bundledPiCodingAgentCapabilityRuleBuckets as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/rule": bundledPiCodingAgentCapabilityRule as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/settings": bundledPiCodingAgentCapabilitySettings as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/skill": bundledPiCodingAgentCapabilitySkill as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/slash-command": - bundledPiCodingAgentCapabilitySlashCommand as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/ssh": bundledPiCodingAgentCapabilitySsh as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/system-prompt": - bundledPiCodingAgentCapabilitySystemPrompt as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/capability/tool": bundledPiCodingAgentCapabilityTool as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/capability/types": bundledPiCodingAgentCapabilityTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/agents-cli": bundledPiCodingAgentCliAgentsCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/args": bundledPiCodingAgentCliArgs as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/auth-broker-cli": bundledPiCodingAgentCliAuthBrokerCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/auth-gateway-cli": bundledPiCodingAgentCliAuthGatewayCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/bench-cli": bundledPiCodingAgentCliBenchCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/classify-install-target": - bundledPiCodingAgentCliClassifyInstallTarget as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/claude-trace-cli": bundledPiCodingAgentCliClaudeTraceCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/completion-gen": bundledPiCodingAgentCliCompletionGen as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/config-cli": bundledPiCodingAgentCliConfigCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/dry-balance-cli": bundledPiCodingAgentCliDryBalanceCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/extension-flags": bundledPiCodingAgentCliExtensionFlags as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/file-processor": bundledPiCodingAgentCliFileProcessor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/flag-tables": bundledPiCodingAgentCliFlagTables as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gallery-cli": bundledPiCodingAgentCliGalleryCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gallery-screenshot": bundledPiCodingAgentCliGalleryScreenshot as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gc-cli": bundledPiCodingAgentCliGcCli as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/grep-cli": bundledPiCodingAgentCliGrepCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/grievances-cli": bundledPiCodingAgentCliGrievancesCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/initial-message": bundledPiCodingAgentCliInitialMessage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/models-cli": bundledPiCodingAgentCliModelsCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/plugin-cli": bundledPiCodingAgentCliPluginCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/profile-alias": bundledPiCodingAgentCliProfileAlias as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/profile-bootstrap": bundledPiCodingAgentCliProfileBootstrap as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/read-cli": bundledPiCodingAgentCliReadCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/session-picker": bundledPiCodingAgentCliSessionPicker as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/setup-cli": bundledPiCodingAgentCliSetupCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/setup-model-picker": bundledPiCodingAgentCliSetupModelPicker as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/shell-cli": bundledPiCodingAgentCliShellCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/ssh-cli": bundledPiCodingAgentCliSshCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/startup-cwd": bundledPiCodingAgentCliStartupCwd as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/stats-cli": bundledPiCodingAgentCliStatsCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/tiny-models-cli": bundledPiCodingAgentCliTinyModelsCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/ttsr-cli": bundledPiCodingAgentCliTtsrCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/update-cli": bundledPiCodingAgentCliUpdateCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/usage-cli": bundledPiCodingAgentCliUsageCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/web-search-cli": bundledPiCodingAgentCliWebSearchCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/worktree-cli": bundledPiCodingAgentCliWorktreeCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/agentic": - bundledPiCodingAgentCliGalleryFixturesAgentic as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/codeintel": - bundledPiCodingAgentCliGalleryFixturesCodeintel as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/edit": - bundledPiCodingAgentCliGalleryFixturesEdit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/fs": bundledPiCodingAgentCliGalleryFixturesFs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/interaction": - bundledPiCodingAgentCliGalleryFixturesInteraction as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/memory": - bundledPiCodingAgentCliGalleryFixturesMemory as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/misc": - bundledPiCodingAgentCliGalleryFixturesMisc as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/search": - bundledPiCodingAgentCliGalleryFixturesSearch as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/shell": - bundledPiCodingAgentCliGalleryFixturesShell as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/types": - bundledPiCodingAgentCliGalleryFixturesTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/gallery-fixtures/web": - bundledPiCodingAgentCliGalleryFixturesWeb as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/cli/commands/init-xdg": bundledPiCodingAgentCliCommandsInitXdg as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/acp": bundledPiCodingAgentCommandsAcp as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/agents": bundledPiCodingAgentCommandsAgents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/auth-broker": bundledPiCodingAgentCommandsAuthBroker as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/auth-gateway": bundledPiCodingAgentCommandsAuthGateway as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/bench": bundledPiCodingAgentCommandsBench as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/commit": bundledPiCodingAgentCommandsCommit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/complete": bundledPiCodingAgentCommandsComplete as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/completions": bundledPiCodingAgentCommandsCompletions as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/config": bundledPiCodingAgentCommandsConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/dry-balance": bundledPiCodingAgentCommandsDryBalance as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/gallery": bundledPiCodingAgentCommandsGallery as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/gc": bundledPiCodingAgentCommandsGc as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/grep": bundledPiCodingAgentCommandsGrep as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/grievances": bundledPiCodingAgentCommandsGrievances as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/install": bundledPiCodingAgentCommandsInstall as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/join": bundledPiCodingAgentCommandsJoin as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/launch": bundledPiCodingAgentCommandsLaunch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/models": bundledPiCodingAgentCommandsModels as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/plugin": bundledPiCodingAgentCommandsPlugin as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/read": bundledPiCodingAgentCommandsRead as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/say": bundledPiCodingAgentCommandsSay as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/setup": bundledPiCodingAgentCommandsSetup as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/shell": bundledPiCodingAgentCommandsShell as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/ssh": bundledPiCodingAgentCommandsSsh as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/stats": bundledPiCodingAgentCommandsStats as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/tiny-models": bundledPiCodingAgentCommandsTinyModels as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/token": bundledPiCodingAgentCommandsToken as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/ttsr": bundledPiCodingAgentCommandsTtsr as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/update": bundledPiCodingAgentCommandsUpdate as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/usage": bundledPiCodingAgentCommandsUsage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/web-search": bundledPiCodingAgentCommandsWebSearch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commands/worktree": bundledPiCodingAgentCommandsWorktree as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/cli": bundledPiCodingAgentCommitCli as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/message": bundledPiCodingAgentCommitMessage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/model-selection": bundledPiCodingAgentCommitModelSelection as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/pipeline": bundledPiCodingAgentCommitPipeline as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/shared-llm": bundledPiCodingAgentCommitSharedLlm as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/types": bundledPiCodingAgentCommitTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/utils": bundledPiCodingAgentCommitUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/agentic/agent": bundledPiCodingAgentCommitAgenticAgent as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/agentic/fallback": - bundledPiCodingAgentCommitAgenticFallback as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/state": bundledPiCodingAgentCommitAgenticState as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/agentic/topo-sort": - bundledPiCodingAgentCommitAgenticTopoSort as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/trivial": bundledPiCodingAgentCommitAgenticTrivial as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/agentic/validation": - bundledPiCodingAgentCommitAgenticValidation as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/analyze-file": - bundledPiCodingAgentCommitAgenticToolsAnalyzeFile as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-file-diff": - bundledPiCodingAgentCommitAgenticToolsGitFileDiff as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-hunk": - bundledPiCodingAgentCommitAgenticToolsGitHunk as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/git-overview": - bundledPiCodingAgentCommitAgenticToolsGitOverview as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-changelog": - bundledPiCodingAgentCommitAgenticToolsProposeChangelog as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/propose-commit": - bundledPiCodingAgentCommitAgenticToolsProposeCommit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/recent-commits": - bundledPiCodingAgentCommitAgenticToolsRecentCommits as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/schemas": - bundledPiCodingAgentCommitAgenticToolsSchemas as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/agentic/tools/split-commit": - bundledPiCodingAgentCommitAgenticToolsSplitCommit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/analysis/conventional": - bundledPiCodingAgentCommitAnalysisConventional as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/analysis/scope": bundledPiCodingAgentCommitAnalysisScope as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/analysis/summary": - bundledPiCodingAgentCommitAnalysisSummary as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/analysis/validation": - bundledPiCodingAgentCommitAnalysisValidation as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/changelog/detect": - bundledPiCodingAgentCommitChangelogDetect as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/changelog/generate": - bundledPiCodingAgentCommitChangelogGenerate as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/changelog/parse": bundledPiCodingAgentCommitChangelogParse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/git/diff": bundledPiCodingAgentCommitGitDiff as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/map-reduce/map-phase": - bundledPiCodingAgentCommitMapReduceMapPhase as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/map-reduce/reduce-phase": - bundledPiCodingAgentCommitMapReduceReducePhase as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/commit/map-reduce/utils": bundledPiCodingAgentCommitMapReduceUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/commit/utils/exclusions": - bundledPiCodingAgentCommitUtilsExclusions as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/api-key-resolver": bundledPiCodingAgentConfigApiKeyResolver as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/append-only-context-mode": - bundledPiCodingAgentConfigAppendOnlyContextMode as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/config-file": bundledPiCodingAgentConfigConfigFile as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/file-lock": bundledPiCodingAgentConfigFileLock as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/inline-tool-descriptors-mode": - bundledPiCodingAgentConfigInlineToolDescriptorsMode as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/keybindings": bundledPiCodingAgentConfigKeybindings as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/model-discovery": bundledPiCodingAgentConfigModelDiscovery as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/model-registry": bundledPiCodingAgentConfigModelRegistry as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/model-resolver": bundledPiCodingAgentConfigModelResolver as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/model-roles": bundledPiCodingAgentConfigModelRoles as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/models-config-schema": - bundledPiCodingAgentConfigModelsConfigSchema as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/models-config": bundledPiCodingAgentConfigModelsConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/prompt-templates": - bundledPiCodingAgentConfigPromptTemplates as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/resolve-config-value": - bundledPiCodingAgentConfigResolveConfigValue as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/config/service-tier": bundledPiCodingAgentConfigServiceTier as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/settings-schema": bundledPiCodingAgentConfigSettingsSchema as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/config/settings": bundledPiCodingAgentConfigSettings as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/dap/client": bundledPiCodingAgentDapClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/dap/config": bundledPiCodingAgentDapConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/dap/session": bundledPiCodingAgentDapSession as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/dap/types": bundledPiCodingAgentDapTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/debug/log-formatting": bundledPiCodingAgentDebugLogFormatting as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/log-viewer": bundledPiCodingAgentDebugLogViewer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/profiler": bundledPiCodingAgentDebugProfiler as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/protocol-probe": bundledPiCodingAgentDebugProtocolProbe as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/raw-sse-buffer": bundledPiCodingAgentDebugRawSseBuffer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/raw-sse": bundledPiCodingAgentDebugRawSse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/remote-debugger": bundledPiCodingAgentDebugRemoteDebugger as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/report-bundle": bundledPiCodingAgentDebugReportBundle as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/system-info": bundledPiCodingAgentDebugSystemInfo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/debug/terminal-info": bundledPiCodingAgentDebugTerminalInfo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/agents-md": bundledPiCodingAgentDiscoveryAgentsMd as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/agents": bundledPiCodingAgentDiscoveryAgents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/at-imports": bundledPiCodingAgentDiscoveryAtImports as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/builtin-defaults": - bundledPiCodingAgentDiscoveryBuiltinDefaults as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery/builtin": bundledPiCodingAgentDiscoveryBuiltin as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/claude-plugins": - bundledPiCodingAgentDiscoveryClaudePlugins as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery/claude": bundledPiCodingAgentDiscoveryClaude as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/cline": bundledPiCodingAgentDiscoveryCline as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/codex": bundledPiCodingAgentDiscoveryCodex as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/cursor": bundledPiCodingAgentDiscoveryCursor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/gemini": bundledPiCodingAgentDiscoveryGemini as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/github": bundledPiCodingAgentDiscoveryGithub as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/helpers": bundledPiCodingAgentDiscoveryHelpers as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/mcp-json": bundledPiCodingAgentDiscoveryMcpJson as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/omp-extension-roots": - bundledPiCodingAgentDiscoveryOmpExtensionRoots as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery/omp-plugins": bundledPiCodingAgentDiscoveryOmpPlugins as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/opencode": bundledPiCodingAgentDiscoveryOpencode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/plugin-dir-roots": - bundledPiCodingAgentDiscoveryPluginDirRoots as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery/ssh": bundledPiCodingAgentDiscoverySsh as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/substitute-plugin-root": - bundledPiCodingAgentDiscoverySubstitutePluginRoot as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/discovery/vscode": bundledPiCodingAgentDiscoveryVscode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/discovery/windsurf": bundledPiCodingAgentDiscoveryWindsurf as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/diff": bundledPiCodingAgentEditDiff as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/edit/file-snapshot-store": - bundledPiCodingAgentEditFileSnapshotStore as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/edit/normalize": bundledPiCodingAgentEditNormalize as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/notebook": bundledPiCodingAgentEditNotebook as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/read-file": bundledPiCodingAgentEditReadFile as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/renderer": bundledPiCodingAgentEditRenderer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/streaming": bundledPiCodingAgentEditStreaming as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/modes/apply-patch": bundledPiCodingAgentEditModesApplyPatch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/modes/patch": bundledPiCodingAgentEditModesPatch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/edit/modes/replace": bundledPiCodingAgentEditModesReplace as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/exa/mcp-client": bundledPiCodingAgentExaMcpClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/exa/types": bundledPiCodingAgentExaTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/exec/bash-executor": bundledPiCodingAgentExecBashExecutor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/exec/exec": bundledPiCodingAgentExecExec as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/exec/non-interactive-env": - bundledPiCodingAgentExecNonInteractiveEnv as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/export/custom-share": bundledPiCodingAgentExportCustomShare as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/export/share": bundledPiCodingAgentExportShare as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/export/ttsr": bundledPiCodingAgentExportTtsr as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/export/html/web-palette": bundledPiCodingAgentExportHtmlWebPalette as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-ai-shim": - bundledPiCodingAgentExtensibilityLegacyPiAiShim as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/legacy-pi-coding-agent-shim": - bundledPiCodingAgentExtensibilityLegacyPiCodingAgentShim as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/session-handler-types": - bundledPiCodingAgentExtensibilitySessionHandlerTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/shared-events": - bundledPiCodingAgentExtensibilitySharedEvents as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/skills": bundledPiCodingAgentExtensibilitySkills as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/slash-commands": - bundledPiCodingAgentExtensibilitySlashCommands as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/tool-event-input": - bundledPiCodingAgentExtensibilityToolEventInput as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/tool-proxy": - bundledPiCodingAgentExtensibilityToolProxy as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/typebox": bundledPiCodingAgentExtensibilityTypebox as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/utils": bundledPiCodingAgentExtensibilityUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/loader": - bundledPiCodingAgentExtensibilityCustomCommandsLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-commands/types": - bundledPiCodingAgentExtensibilityCustomCommandsTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/loader": - bundledPiCodingAgentExtensibilityCustomToolsLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/types": - bundledPiCodingAgentExtensibilityCustomToolsTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/custom-tools/wrapper": - bundledPiCodingAgentExtensibilityCustomToolsWrapper as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/compact-handler": - bundledPiCodingAgentExtensibilityExtensionsCompactHandler as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/get-commands-handler": - bundledPiCodingAgentExtensibilityExtensionsGetCommandsHandler as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/loader": - bundledPiCodingAgentExtensibilityExtensionsLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/model-api": - bundledPiCodingAgentExtensibilityExtensionsModelApi as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/runner": - bundledPiCodingAgentExtensibilityExtensionsRunner as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/types": - bundledPiCodingAgentExtensibilityExtensionsTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/extensions/wrapper": - bundledPiCodingAgentExtensibilityExtensionsWrapper as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/hooks/loader": - bundledPiCodingAgentExtensibilityHooksLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/hooks/runner": - bundledPiCodingAgentExtensibilityHooksRunner as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/hooks/tool-wrapper": - bundledPiCodingAgentExtensibilityHooksToolWrapper as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/hooks/types": - bundledPiCodingAgentExtensibilityHooksTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/doctor": - bundledPiCodingAgentExtensibilityPluginsDoctor as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/git-url": - bundledPiCodingAgentExtensibilityPluginsGitUrl as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/installer": - bundledPiCodingAgentExtensibilityPluginsInstaller as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-keys": - bundledPiCodingAgentExtensibilityPluginsLegacyPiBundledKeys as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-registry": - bundledPiCodingAgentExtensibilityPluginsLegacyPiBundledRegistry as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-compat": - bundledPiCodingAgentExtensibilityPluginsLegacyPiCompat as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/loader": - bundledPiCodingAgentExtensibilityPluginsLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/manager": - bundledPiCodingAgentExtensibilityPluginsManager as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace-auto-update": - bundledPiCodingAgentExtensibilityPluginsMarketplaceAutoUpdate as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/parser": - bundledPiCodingAgentExtensibilityPluginsParser as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/runtime-config": - bundledPiCodingAgentExtensibilityPluginsRuntimeConfig as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/types": - bundledPiCodingAgentExtensibilityPluginsTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/cache": - bundledPiCodingAgentExtensibilityPluginsMarketplaceCache as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/fetcher": - bundledPiCodingAgentExtensibilityPluginsMarketplaceFetcher as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/manager": - bundledPiCodingAgentExtensibilityPluginsMarketplaceManager as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/registry": - bundledPiCodingAgentExtensibilityPluginsMarketplaceRegistry as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/source-resolver": - bundledPiCodingAgentExtensibilityPluginsMarketplaceSourceResolver as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/extensibility/plugins/marketplace/types": - bundledPiCodingAgentExtensibilityPluginsMarketplaceTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/agent-protocol": - bundledPiCodingAgentInternalUrlsAgentProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/artifact-protocol": - bundledPiCodingAgentInternalUrlsArtifactProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/docs-index": - bundledPiCodingAgentInternalUrlsDocsIndex as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/filesystem-resource": - bundledPiCodingAgentInternalUrlsFilesystemResource as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/history-protocol": - bundledPiCodingAgentInternalUrlsHistoryProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/issue-pr-protocol": - bundledPiCodingAgentInternalUrlsIssuePrProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/json-query": - bundledPiCodingAgentInternalUrlsJsonQuery as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/local-protocol": - bundledPiCodingAgentInternalUrlsLocalProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/mcp-protocol": - bundledPiCodingAgentInternalUrlsMcpProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/memory-protocol": - bundledPiCodingAgentInternalUrlsMemoryProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/omp-protocol": - bundledPiCodingAgentInternalUrlsOmpProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/parse": bundledPiCodingAgentInternalUrlsParse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/internal-urls/registry-helpers": - bundledPiCodingAgentInternalUrlsRegistryHelpers as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/router": bundledPiCodingAgentInternalUrlsRouter as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/internal-urls/rule-protocol": - bundledPiCodingAgentInternalUrlsRuleProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/skill-protocol": - bundledPiCodingAgentInternalUrlsSkillProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/ssh-protocol": - bundledPiCodingAgentInternalUrlsSshProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/internal-urls/types": bundledPiCodingAgentInternalUrlsTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/internal-urls/vault-protocol": - bundledPiCodingAgentInternalUrlsVaultProtocol as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/eval/js/context-manager": bundledPiCodingAgentEvalJsContextManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/js/executor": bundledPiCodingAgentEvalJsExecutor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/js/tool-bridge": bundledPiCodingAgentEvalJsToolBridge as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/js/worker-core": bundledPiCodingAgentEvalJsWorkerCore as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/js/worker-protocol": bundledPiCodingAgentEvalJsWorkerProtocol as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/display": bundledPiCodingAgentEvalPyDisplay as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/executor": bundledPiCodingAgentEvalPyExecutor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/kernel": bundledPiCodingAgentEvalPyKernel as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/prelude": bundledPiCodingAgentEvalPyPrelude as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/runtime": bundledPiCodingAgentEvalPyRuntime as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/spawn-options": bundledPiCodingAgentEvalPySpawnOptions as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/eval/py/tool-bridge": bundledPiCodingAgentEvalPyToolBridge as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/client": bundledPiCodingAgentLspClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/config": bundledPiCodingAgentLspConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/diagnostics-ledger": bundledPiCodingAgentLspDiagnosticsLedger as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/edits": bundledPiCodingAgentLspEdits as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/format-options": bundledPiCodingAgentLspFormatOptions as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/lspmux": bundledPiCodingAgentLspLspmux as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/render": bundledPiCodingAgentLspRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/startup-events": bundledPiCodingAgentLspStartupEvents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/lsp/types": bundledPiCodingAgentLspTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/utils": bundledPiCodingAgentLspUtils as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/clients/biome-client": - bundledPiCodingAgentLspClientsBiomeClient as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/clients/lsp-linter-client": - bundledPiCodingAgentLspClientsLspLinterClient as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/lsp/clients/swiftlint-client": - bundledPiCodingAgentLspClientsSwiftlintClient as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/markit/registry": bundledPiCodingAgentMarkitRegistry as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/markit/types": bundledPiCodingAgentMarkitTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/client": bundledPiCodingAgentMcpClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/config-writer": bundledPiCodingAgentMcpConfigWriter as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/config": bundledPiCodingAgentMcpConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/json-rpc": bundledPiCodingAgentMcpJsonRpc as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/loader": bundledPiCodingAgentMcpLoader as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/manager": bundledPiCodingAgentMcpManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/oauth-credentials": bundledPiCodingAgentMcpOauthCredentials as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/oauth-discovery": bundledPiCodingAgentMcpOauthDiscovery as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/oauth-flow": bundledPiCodingAgentMcpOauthFlow as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/render": bundledPiCodingAgentMcpRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/smithery-auth": bundledPiCodingAgentMcpSmitheryAuth as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/smithery-connect": bundledPiCodingAgentMcpSmitheryConnect as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/smithery-registry": bundledPiCodingAgentMcpSmitheryRegistry as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/startup-events": bundledPiCodingAgentMcpStartupEvents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/timeout": bundledPiCodingAgentMcpTimeout as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/tool-bridge": bundledPiCodingAgentMcpToolBridge as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/tool-cache": bundledPiCodingAgentMcpToolCache as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/types": bundledPiCodingAgentMcpTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/mcp/transports/http": bundledPiCodingAgentMcpTransportsHttp as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/mcp/transports/stdio": bundledPiCodingAgentMcpTransportsStdio as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/memories/storage": bundledPiCodingAgentMemoriesStorage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/memory-backend/local-backend": - bundledPiCodingAgentMemoryBackendLocalBackend as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/memory-backend/off-backend": - bundledPiCodingAgentMemoryBackendOffBackend as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/memory-backend/resolve": bundledPiCodingAgentMemoryBackendResolve as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/memory-backend/runtime": bundledPiCodingAgentMemoryBackendRuntime as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/memory-backend/types": bundledPiCodingAgentMemoryBackendTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/backend": bundledPiCodingAgentHindsightBackend as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/bank": bundledPiCodingAgentHindsightBank as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/client": bundledPiCodingAgentHindsightClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/config": bundledPiCodingAgentHindsightConfig as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/content": bundledPiCodingAgentHindsightContent as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/mental-models": - bundledPiCodingAgentHindsightMentalModels as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/hindsight/state": bundledPiCodingAgentHindsightState as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/hindsight/transcript": bundledPiCodingAgentHindsightTranscript as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/emoji-autocomplete": - bundledPiCodingAgentModesEmojiAutocomplete as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/gradient-highlight": - bundledPiCodingAgentModesGradientHighlight as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/image-references": bundledPiCodingAgentModesImageReferences as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/interactive-mode": bundledPiCodingAgentModesInteractiveMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/internal-url-autocomplete": - bundledPiCodingAgentModesInternalUrlAutocomplete as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/loop-limit": bundledPiCodingAgentModesLoopLimit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/magic-keywords": bundledPiCodingAgentModesMagicKeywords as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/markdown-prose": bundledPiCodingAgentModesMarkdownProse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/oauth-manual-input": - bundledPiCodingAgentModesOauthManualInput as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/orchestrate": bundledPiCodingAgentModesOrchestrate as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/print-mode": bundledPiCodingAgentModesPrintMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/prompt-action-autocomplete": - bundledPiCodingAgentModesPromptActionAutocomplete as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/running-subagent-badge": - bundledPiCodingAgentModesRunningSubagentBadge as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/runtime-init": bundledPiCodingAgentModesRuntimeInit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/session-observer-registry": - bundledPiCodingAgentModesSessionObserverRegistry as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/setup-version": bundledPiCodingAgentModesSetupVersion as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/shared": bundledPiCodingAgentModesShared as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/turn-budget": bundledPiCodingAgentModesTurnBudget as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/types": bundledPiCodingAgentModesTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/ultrathink": bundledPiCodingAgentModesUltrathink as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/workflow": bundledPiCodingAgentModesWorkflow as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/acp/acp-agent": bundledPiCodingAgentModesAcpAcpAgent as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/acp/acp-client-bridge": - bundledPiCodingAgentModesAcpAcpClientBridge as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/acp/acp-event-mapper": - bundledPiCodingAgentModesAcpAcpEventMapper as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/acp/acp-mode": bundledPiCodingAgentModesAcpAcpMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/acp/terminal-auth": bundledPiCodingAgentModesAcpTerminalAuth as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/components/advisor-message": - bundledPiCodingAgentModesComponentsAdvisorMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/agent-dashboard": - bundledPiCodingAgentModesComponentsAgentDashboard as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/agent-hub": - bundledPiCodingAgentModesComponentsAgentHub as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/agent-transcript-viewer": - bundledPiCodingAgentModesComponentsAgentTranscriptViewer as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/assistant-message": - bundledPiCodingAgentModesComponentsAssistantMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/background-tan-message": - bundledPiCodingAgentModesComponentsBackgroundTanMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/bash-execution": - bundledPiCodingAgentModesComponentsBashExecution as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/bordered-loader": - bundledPiCodingAgentModesComponentsBorderedLoader as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/btw-panel": - bundledPiCodingAgentModesComponentsBtwPanel as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/cache-invalidation-marker": - bundledPiCodingAgentModesComponentsCacheInvalidationMarker as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/chat-block": - bundledPiCodingAgentModesComponentsChatBlock as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/chat-transcript-builder": - bundledPiCodingAgentModesComponentsChatTranscriptBuilder as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/collab-prompt-message": - bundledPiCodingAgentModesComponentsCollabPromptMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/compaction-summary-message": - bundledPiCodingAgentModesComponentsCompactionSummaryMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/copy-selector": - bundledPiCodingAgentModesComponentsCopySelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/countdown-timer": - bundledPiCodingAgentModesComponentsCountdownTimer as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/custom-editor": - bundledPiCodingAgentModesComponentsCustomEditor as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/custom-message": - bundledPiCodingAgentModesComponentsCustomMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/diff": bundledPiCodingAgentModesComponentsDiff as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/components/dynamic-border": - bundledPiCodingAgentModesComponentsDynamicBorder as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/error-banner": - bundledPiCodingAgentModesComponentsErrorBanner as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/eval-execution": - bundledPiCodingAgentModesComponentsEvalExecution as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/execution-shared": - bundledPiCodingAgentModesComponentsExecutionShared as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/footer": - bundledPiCodingAgentModesComponentsFooter as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/history-search": - bundledPiCodingAgentModesComponentsHistorySearch as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/hook-editor": - bundledPiCodingAgentModesComponentsHookEditor as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/hook-input": - bundledPiCodingAgentModesComponentsHookInput as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/hook-message": - bundledPiCodingAgentModesComponentsHookMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/hook-selector": - bundledPiCodingAgentModesComponentsHookSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/keybinding-hints": - bundledPiCodingAgentModesComponentsKeybindingHints as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/late-diagnostics-message": - bundledPiCodingAgentModesComponentsLateDiagnosticsMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/login-dialog": - bundledPiCodingAgentModesComponentsLoginDialog as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/logout-account-selector": - bundledPiCodingAgentModesComponentsLogoutAccountSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/mcp-add-wizard": - bundledPiCodingAgentModesComponentsMcpAddWizard as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/message-frame": - bundledPiCodingAgentModesComponentsMessageFrame as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/model-selector": - bundledPiCodingAgentModesComponentsModelSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/move-overlay": - bundledPiCodingAgentModesComponentsMoveOverlay as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/oauth-selector": - bundledPiCodingAgentModesComponentsOauthSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/omfg-panel": - bundledPiCodingAgentModesComponentsOmfgPanel as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/overlay-box": - bundledPiCodingAgentModesComponentsOverlayBox as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/plan-review-overlay": - bundledPiCodingAgentModesComponentsPlanReviewOverlay as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/plan-toc": - bundledPiCodingAgentModesComponentsPlanToc as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/plugin-selector": - bundledPiCodingAgentModesComponentsPluginSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/plugin-settings": - bundledPiCodingAgentModesComponentsPluginSettings as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/queue-mode-selector": - bundledPiCodingAgentModesComponentsQueueModeSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/read-tool-group": - bundledPiCodingAgentModesComponentsReadToolGroup as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/reset-usage-selector": - bundledPiCodingAgentModesComponentsResetUsageSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/segment-track": - bundledPiCodingAgentModesComponentsSegmentTrack as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/select-list-mouse-routing": - bundledPiCodingAgentModesComponentsSelectListMouseRouting as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/selector-helpers": - bundledPiCodingAgentModesComponentsSelectorHelpers as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/session-selector": - bundledPiCodingAgentModesComponentsSessionSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/settings-defs": - bundledPiCodingAgentModesComponentsSettingsDefs as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/settings-selector": - bundledPiCodingAgentModesComponentsSettingsSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/show-images-selector": - bundledPiCodingAgentModesComponentsShowImagesSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/skill-message": - bundledPiCodingAgentModesComponentsSkillMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/snapcompact-shape-preview": - bundledPiCodingAgentModesComponentsSnapcompactShapePreview as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/theme-selector": - bundledPiCodingAgentModesComponentsThemeSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/thinking-selector": - bundledPiCodingAgentModesComponentsThinkingSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/tiny-title-download-progress": - bundledPiCodingAgentModesComponentsTinyTitleDownloadProgress as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/todo-reminder": - bundledPiCodingAgentModesComponentsTodoReminder as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/tool-execution": - bundledPiCodingAgentModesComponentsToolExecution as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/transcript-container": - bundledPiCodingAgentModesComponentsTranscriptContainer as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/tree-selector": - bundledPiCodingAgentModesComponentsTreeSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/ttsr-notification": - bundledPiCodingAgentModesComponentsTtsrNotification as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/usage-row": - bundledPiCodingAgentModesComponentsUsageRow as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/user-message-selector": - bundledPiCodingAgentModesComponentsUserMessageSelector as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/user-message": - bundledPiCodingAgentModesComponentsUserMessage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/visual-truncate": - bundledPiCodingAgentModesComponentsVisualTruncate as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/welcome": - bundledPiCodingAgentModesComponentsWelcome as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-dashboard": - bundledPiCodingAgentModesComponentsExtensionsExtensionDashboard as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/extensions/extension-list": - bundledPiCodingAgentModesComponentsExtensionsExtensionList as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/extensions/inspector-panel": - bundledPiCodingAgentModesComponentsExtensionsInspectorPanel as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/extensions/state-manager": - bundledPiCodingAgentModesComponentsExtensionsStateManager as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/extensions/types": - bundledPiCodingAgentModesComponentsExtensionsTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/component": - bundledPiCodingAgentModesComponentsStatusLineComponent as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/context-thresholds": - bundledPiCodingAgentModesComponentsStatusLineContextThresholds as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/git-utils": - bundledPiCodingAgentModesComponentsStatusLineGitUtils as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/presets": - bundledPiCodingAgentModesComponentsStatusLinePresets as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/segments": - bundledPiCodingAgentModesComponentsStatusLineSegments as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/separators": - bundledPiCodingAgentModesComponentsStatusLineSeparators as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/token-rate": - bundledPiCodingAgentModesComponentsStatusLineTokenRate as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/components/status-line/types": - bundledPiCodingAgentModesComponentsStatusLineTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/btw-controller": - bundledPiCodingAgentModesControllersBtwController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller-shared": - bundledPiCodingAgentModesControllersCommandControllerShared as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/command-controller": - bundledPiCodingAgentModesControllersCommandController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/event-controller": - bundledPiCodingAgentModesControllersEventController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/extension-ui-controller": - bundledPiCodingAgentModesControllersExtensionUiController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/input-controller": - bundledPiCodingAgentModesControllersInputController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/mcp-command-controller": - bundledPiCodingAgentModesControllersMcpCommandController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-controller": - bundledPiCodingAgentModesControllersOmfgController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/omfg-rule": - bundledPiCodingAgentModesControllersOmfgRule as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/selector-controller": - bundledPiCodingAgentModesControllersSelectorController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/session-focus-controller": - bundledPiCodingAgentModesControllersSessionFocusController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/ssh-command-controller": - bundledPiCodingAgentModesControllersSshCommandController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/streaming-reveal": - bundledPiCodingAgentModesControllersStreamingReveal as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/tan-command-controller": - bundledPiCodingAgentModesControllersTanCommandController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/todo-command-controller": - bundledPiCodingAgentModesControllersTodoCommandController as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/controllers/tool-args-reveal": - bundledPiCodingAgentModesControllersToolArgsReveal as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/lazy": bundledPiCodingAgentModesSetupWizardLazy as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/startup-splash": - bundledPiCodingAgentModesSetupWizardStartupSplash as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/setup-wizard/wizard-overlay": - bundledPiCodingAgentModesSetupWizardWizardOverlay as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/rpc/host-tools": bundledPiCodingAgentModesRpcHostTools as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/rpc/host-uris": bundledPiCodingAgentModesRpcHostUris as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-client": bundledPiCodingAgentModesRpcRpcClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-mode": bundledPiCodingAgentModesRpcRpcMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-subagents": bundledPiCodingAgentModesRpcRpcSubagents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/rpc/rpc-types": bundledPiCodingAgentModesRpcRpcTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/theme/mermaid-cache": - bundledPiCodingAgentModesThemeMermaidCache as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/theme/shimmer": bundledPiCodingAgentModesThemeShimmer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/theme/theme": bundledPiCodingAgentModesThemeTheme as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/modes/utils/context-usage": - bundledPiCodingAgentModesUtilsContextUsage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/copy-targets": - bundledPiCodingAgentModesUtilsCopyTargets as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/hotkeys-markdown": - bundledPiCodingAgentModesUtilsHotkeysMarkdown as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/interactive-context-helpers": - bundledPiCodingAgentModesUtilsInteractiveContextHelpers as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/keybinding-matchers": - bundledPiCodingAgentModesUtilsKeybindingMatchers as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/tools-markdown": - bundledPiCodingAgentModesUtilsToolsMarkdown as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/transcript-render-helpers": - bundledPiCodingAgentModesUtilsTranscriptRenderHelpers as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/modes/utils/ui-helpers": bundledPiCodingAgentModesUtilsUiHelpers as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/plan-mode/approved-plan": bundledPiCodingAgentPlanModeApprovedPlan as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/plan-mode/plan-handoff": bundledPiCodingAgentPlanModePlanHandoff as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/plan-mode/plan-protection": - bundledPiCodingAgentPlanModePlanProtection as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/plan-mode/state": bundledPiCodingAgentPlanModeState as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/secrets/obfuscator": bundledPiCodingAgentSecretsObfuscator as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/secrets/regex": bundledPiCodingAgentSecretsRegex as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/agent-session": bundledPiCodingAgentSessionAgentSession as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/agent-storage": bundledPiCodingAgentSessionAgentStorage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/artifacts": bundledPiCodingAgentSessionArtifacts as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/auth-broker-config": - bundledPiCodingAgentSessionAuthBrokerConfig as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/auth-storage": bundledPiCodingAgentSessionAuthStorage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/blob-store": bundledPiCodingAgentSessionBlobStore as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/client-bridge": bundledPiCodingAgentSessionClientBridge as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/codex-auto-reset": - bundledPiCodingAgentSessionCodexAutoReset as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/compact-modes": bundledPiCodingAgentSessionCompactModes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/history-storage": - bundledPiCodingAgentSessionHistoryStorage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/indexed-session-storage": - bundledPiCodingAgentSessionIndexedSessionStorage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/messages": bundledPiCodingAgentSessionMessages as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/provider-image-budget": - bundledPiCodingAgentSessionProviderImageBudget as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/redis-session-storage": - bundledPiCodingAgentSessionRedisSessionStorage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-context": - bundledPiCodingAgentSessionSessionContext as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-dump-format": - bundledPiCodingAgentSessionSessionDumpFormat as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-entries": - bundledPiCodingAgentSessionSessionEntries as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-history-format": - bundledPiCodingAgentSessionSessionHistoryFormat as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-listing": - bundledPiCodingAgentSessionSessionListing as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-loader": bundledPiCodingAgentSessionSessionLoader as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/session-manager": - bundledPiCodingAgentSessionSessionManager as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-migrations": - bundledPiCodingAgentSessionSessionMigrations as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-paths": bundledPiCodingAgentSessionSessionPaths as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/session-persistence": - bundledPiCodingAgentSessionSessionPersistence as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/session-storage": - bundledPiCodingAgentSessionSessionStorage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/settings-stream-fn": - bundledPiCodingAgentSessionSettingsStreamFn as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/shake-types": bundledPiCodingAgentSessionShakeTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/session/snapcompact-inline": - bundledPiCodingAgentSessionSnapcompactInline as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/snapcompact-savings-journal": - bundledPiCodingAgentSessionSnapcompactSavingsJournal as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/sql-session-storage": - bundledPiCodingAgentSessionSqlSessionStorage as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/streaming-output": - bundledPiCodingAgentSessionStreamingOutput as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/tool-choice-queue": - bundledPiCodingAgentSessionToolChoiceQueue as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/turn-persistence": - bundledPiCodingAgentSessionTurnPersistence as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/unexpected-stop-classifier": - bundledPiCodingAgentSessionUnexpectedStopClassifier as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/session/yield-queue": bundledPiCodingAgentSessionYieldQueue as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/slash-commands/acp-builtins": - bundledPiCodingAgentSlashCommandsAcpBuiltins as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/slash-commands/available-commands": - bundledPiCodingAgentSlashCommandsAvailableCommands as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/slash-commands/builtin-registry": - bundledPiCodingAgentSlashCommandsBuiltinRegistry as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/slash-commands/marketplace-install-parser": - bundledPiCodingAgentSlashCommandsMarketplaceInstallParser as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/slash-commands/types": bundledPiCodingAgentSlashCommandsTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/config-writer": bundledPiCodingAgentSshConfigWriter as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/connection-manager": bundledPiCodingAgentSshConnectionManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/file-transfer": bundledPiCodingAgentSshFileTransfer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/ssh-executor": bundledPiCodingAgentSshSshExecutor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/sshfs-mount": bundledPiCodingAgentSshSshfsMount as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/ssh/utils": bundledPiCodingAgentSshUtils as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/stt/asr-client": bundledPiCodingAgentSttAsrClient as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/asr-protocol": bundledPiCodingAgentSttAsrProtocol as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/asr-worker": bundledPiCodingAgentSttAsrWorker as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/downloader": bundledPiCodingAgentSttDownloader as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/endpointer": bundledPiCodingAgentSttEndpointer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/models": bundledPiCodingAgentSttModels as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/recorder": bundledPiCodingAgentSttRecorder as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/stt-controller": bundledPiCodingAgentSttSttController as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/transcriber": bundledPiCodingAgentSttTranscriber as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/stt/wav": bundledPiCodingAgentSttWav as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/task/agents": bundledPiCodingAgentTaskAgents as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/commands": bundledPiCodingAgentTaskCommands as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/discovery": bundledPiCodingAgentTaskDiscovery as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/executor": bundledPiCodingAgentTaskExecutor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/isolation-runner": bundledPiCodingAgentTaskIsolationRunner as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/name-generator": bundledPiCodingAgentTaskNameGenerator as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/omp-command": bundledPiCodingAgentTaskOmpCommand as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/output-manager": bundledPiCodingAgentTaskOutputManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/parallel": bundledPiCodingAgentTaskParallel as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/persisted-revive": bundledPiCodingAgentTaskPersistedRevive as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/render": bundledPiCodingAgentTaskRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/repair-args": bundledPiCodingAgentTaskRepairArgs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/subprocess-tool-registry": - bundledPiCodingAgentTaskSubprocessToolRegistry as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/task/types": bundledPiCodingAgentTaskTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/task/worktree": bundledPiCodingAgentTaskWorktree as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tool-discovery/mode": bundledPiCodingAgentToolDiscoveryMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tool-discovery/tool-index": - bundledPiCodingAgentToolDiscoveryToolIndex as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/acp-bridge": bundledPiCodingAgentToolsAcpBridge as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/approval": bundledPiCodingAgentToolsApproval as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/ask": bundledPiCodingAgentToolsAsk as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/ast-edit": bundledPiCodingAgentToolsAstEdit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/ast-grep": bundledPiCodingAgentToolsAstGrep as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/auto-generated-guard": - bundledPiCodingAgentToolsAutoGeneratedGuard as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/bash-command-fixup": - bundledPiCodingAgentToolsBashCommandFixup as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/bash-interactive": bundledPiCodingAgentToolsBashInteractive as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/bash-interceptor": bundledPiCodingAgentToolsBashInterceptor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/bash-pty-selection": - bundledPiCodingAgentToolsBashPtySelection as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/bash-skill-urls": bundledPiCodingAgentToolsBashSkillUrls as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/bash": bundledPiCodingAgentToolsBash as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/browser": bundledPiCodingAgentToolsBrowser as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/builtin-names": bundledPiCodingAgentToolsBuiltinNames as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/checkpoint": bundledPiCodingAgentToolsCheckpoint as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/conflict-detect": bundledPiCodingAgentToolsConflictDetect as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/context": bundledPiCodingAgentToolsContext as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/debug": bundledPiCodingAgentToolsDebug as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/eval-backends": bundledPiCodingAgentToolsEvalBackends as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/eval-render": bundledPiCodingAgentToolsEvalRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/eval": bundledPiCodingAgentToolsEval as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/fetch": bundledPiCodingAgentToolsFetch as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/file-recorder": bundledPiCodingAgentToolsFileRecorder as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/fs-cache-invalidation": - bundledPiCodingAgentToolsFsCacheInvalidation as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/gh-cache-invalidation": - bundledPiCodingAgentToolsGhCacheInvalidation as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/gh-format": bundledPiCodingAgentToolsGhFormat as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/gh-renderer": bundledPiCodingAgentToolsGhRenderer as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/gh": bundledPiCodingAgentToolsGh as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/github-cache": bundledPiCodingAgentToolsGithubCache as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/glob": bundledPiCodingAgentToolsGlob as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/grep": bundledPiCodingAgentToolsGrep as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/grouped-file-output": - bundledPiCodingAgentToolsGroupedFileOutput as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/image-gen": bundledPiCodingAgentToolsImageGen as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/inspect-image-renderer": - bundledPiCodingAgentToolsInspectImageRenderer as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/inspect-image": bundledPiCodingAgentToolsInspectImage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/irc": bundledPiCodingAgentToolsIrc as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/job": bundledPiCodingAgentToolsJob as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/json-tree": bundledPiCodingAgentToolsJsonTree as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/jtd-to-json-schema": - bundledPiCodingAgentToolsJtdToJsonSchema as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/jtd-to-typescript": bundledPiCodingAgentToolsJtdToTypescript as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/jtd-utils": bundledPiCodingAgentToolsJtdUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/learn": bundledPiCodingAgentToolsLearn as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/list-limit": bundledPiCodingAgentToolsListLimit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/manage-skill": bundledPiCodingAgentToolsManageSkill as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/match-line-format": bundledPiCodingAgentToolsMatchLineFormat as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/memory-edit": bundledPiCodingAgentToolsMemoryEdit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/memory-recall": bundledPiCodingAgentToolsMemoryRecall as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/memory-reflect": bundledPiCodingAgentToolsMemoryReflect as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/memory-render": bundledPiCodingAgentToolsMemoryRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/memory-retain": bundledPiCodingAgentToolsMemoryRetain as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/output-meta": bundledPiCodingAgentToolsOutputMeta as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/output-schema-validator": - bundledPiCodingAgentToolsOutputSchemaValidator as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/path-utils": bundledPiCodingAgentToolsPathUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/plan-mode-guard": bundledPiCodingAgentToolsPlanModeGuard as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/read": bundledPiCodingAgentToolsRead as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/render-utils": bundledPiCodingAgentToolsRenderUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/renderers": bundledPiCodingAgentToolsRenderers as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/report-tool-issue": bundledPiCodingAgentToolsReportToolIssue as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/resolve": bundledPiCodingAgentToolsResolve as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/review": bundledPiCodingAgentToolsReview as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/search-tool-bm25": bundledPiCodingAgentToolsSearchToolBm25 as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/sqlite-reader": bundledPiCodingAgentToolsSqliteReader as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/ssh": bundledPiCodingAgentToolsSsh as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/todo": bundledPiCodingAgentToolsTodo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/tool-errors": bundledPiCodingAgentToolsToolErrors as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/tool-result": bundledPiCodingAgentToolsToolResult as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/tool-timeouts": bundledPiCodingAgentToolsToolTimeouts as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/tts": bundledPiCodingAgentToolsTts as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tools/write": bundledPiCodingAgentToolsWrite as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tools/yield": bundledPiCodingAgentToolsYield as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/code-cell": bundledPiCodingAgentTuiCodeCell as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/file-list": bundledPiCodingAgentTuiFileList as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/hyperlink": bundledPiCodingAgentTuiHyperlink as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/output-block": bundledPiCodingAgentTuiOutputBlock as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/status-line": bundledPiCodingAgentTuiStatusLine as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/tree-list": bundledPiCodingAgentTuiTreeList as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/tui/types": bundledPiCodingAgentTuiTypes as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tui/utils": bundledPiCodingAgentTuiUtils as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/tui/width-aware-text": bundledPiCodingAgentTuiWidthAwareText as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/active-repo-context": - bundledPiCodingAgentUtilsActiveRepoContext as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/block-context": bundledPiCodingAgentUtilsBlockContext as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/changelog": bundledPiCodingAgentUtilsChangelog as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/clipboard": bundledPiCodingAgentUtilsClipboard as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/command-args": bundledPiCodingAgentUtilsCommandArgs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/commit-message-generator": - bundledPiCodingAgentUtilsCommitMessageGenerator as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/edit-mode": bundledPiCodingAgentUtilsEditMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/enhanced-paste": bundledPiCodingAgentUtilsEnhancedPaste as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/event-bus": bundledPiCodingAgentUtilsEventBus as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/external-editor": bundledPiCodingAgentUtilsExternalEditor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/file-display-mode": bundledPiCodingAgentUtilsFileDisplayMode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/file-mentions": bundledPiCodingAgentUtilsFileMentions as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/git": bundledPiCodingAgentUtilsGit as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/image-loading": bundledPiCodingAgentUtilsImageLoading as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/image-resize": bundledPiCodingAgentUtilsImageResize as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/image-vision-fallback": - bundledPiCodingAgentUtilsImageVisionFallback as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/ipc": bundledPiCodingAgentUtilsIpc as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/jj": bundledPiCodingAgentUtilsJj as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/utils/lang-from-path": bundledPiCodingAgentUtilsLangFromPath as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/markit-cache": bundledPiCodingAgentUtilsMarkitCache as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/markit": bundledPiCodingAgentUtilsMarkit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/mupdf-wasm-embed": bundledPiCodingAgentUtilsMupdfWasmEmbed as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/open": bundledPiCodingAgentUtilsOpen as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/prompt-path": bundledPiCodingAgentUtilsPromptPath as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/qrcode": bundledPiCodingAgentUtilsQrcode as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/session-color": bundledPiCodingAgentUtilsSessionColor as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/shell-snapshot": bundledPiCodingAgentUtilsShellSnapshot as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/sixel": bundledPiCodingAgentUtilsSixel as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/thinking-display": bundledPiCodingAgentUtilsThinkingDisplay as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/title-generator": bundledPiCodingAgentUtilsTitleGenerator as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/tool-choice": bundledPiCodingAgentUtilsToolChoice as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/tools-manager": bundledPiCodingAgentUtilsToolsManager as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/turndown": bundledPiCodingAgentUtilsTurndown as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/utils/zip": bundledPiCodingAgentUtilsZip as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/kagi": bundledPiCodingAgentWebKagi as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/parallel": bundledPiCodingAgentWebParallel as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/artifacthub": - bundledPiCodingAgentWebScrapersArtifacthub as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/arxiv": bundledPiCodingAgentWebScrapersArxiv as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/aur": bundledPiCodingAgentWebScrapersAur as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/biorxiv": bundledPiCodingAgentWebScrapersBiorxiv as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/bluesky": bundledPiCodingAgentWebScrapersBluesky as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/brew": bundledPiCodingAgentWebScrapersBrew as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/cheatsh": bundledPiCodingAgentWebScrapersCheatsh as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/chocolatey": - bundledPiCodingAgentWebScrapersChocolatey as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/choosealicense": - bundledPiCodingAgentWebScrapersChoosealicense as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/cisa-kev": bundledPiCodingAgentWebScrapersCisaKev as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/clojars": bundledPiCodingAgentWebScrapersClojars as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/coingecko": bundledPiCodingAgentWebScrapersCoingecko as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/crates-io": bundledPiCodingAgentWebScrapersCratesIo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/crossref": bundledPiCodingAgentWebScrapersCrossref as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/devto": bundledPiCodingAgentWebScrapersDevto as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/discogs": bundledPiCodingAgentWebScrapersDiscogs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/discourse": bundledPiCodingAgentWebScrapersDiscourse as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/dockerhub": bundledPiCodingAgentWebScrapersDockerhub as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/docs-rs": bundledPiCodingAgentWebScrapersDocsRs as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/fdroid": bundledPiCodingAgentWebScrapersFdroid as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/firefox-addons": - bundledPiCodingAgentWebScrapersFirefoxAddons as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/flathub": bundledPiCodingAgentWebScrapersFlathub as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/github-gist": - bundledPiCodingAgentWebScrapersGithubGist as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/github": bundledPiCodingAgentWebScrapersGithub as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/gitlab": bundledPiCodingAgentWebScrapersGitlab as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/go-pkg": bundledPiCodingAgentWebScrapersGoPkg as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/hackage": bundledPiCodingAgentWebScrapersHackage as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/hackernews": - bundledPiCodingAgentWebScrapersHackernews as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/hex": bundledPiCodingAgentWebScrapersHex as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/huggingface": - bundledPiCodingAgentWebScrapersHuggingface as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/iacr": bundledPiCodingAgentWebScrapersIacr as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/jetbrains-marketplace": - bundledPiCodingAgentWebScrapersJetbrainsMarketplace as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/lemmy": bundledPiCodingAgentWebScrapersLemmy as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/lobsters": bundledPiCodingAgentWebScrapersLobsters as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/mastodon": bundledPiCodingAgentWebScrapersMastodon as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/maven": bundledPiCodingAgentWebScrapersMaven as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/mdn": bundledPiCodingAgentWebScrapersMdn as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/metacpan": bundledPiCodingAgentWebScrapersMetacpan as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/musicbrainz": - bundledPiCodingAgentWebScrapersMusicbrainz as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/npm": bundledPiCodingAgentWebScrapersNpm as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/nuget": bundledPiCodingAgentWebScrapersNuget as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/nvd": bundledPiCodingAgentWebScrapersNvd as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/ollama": bundledPiCodingAgentWebScrapersOllama as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/open-vsx": bundledPiCodingAgentWebScrapersOpenVsx as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/opencorporates": - bundledPiCodingAgentWebScrapersOpencorporates as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/openlibrary": - bundledPiCodingAgentWebScrapersOpenlibrary as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/orcid": bundledPiCodingAgentWebScrapersOrcid as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/osv": bundledPiCodingAgentWebScrapersOsv as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/packagist": bundledPiCodingAgentWebScrapersPackagist as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/pub-dev": bundledPiCodingAgentWebScrapersPubDev as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/pubmed": bundledPiCodingAgentWebScrapersPubmed as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/pypi": bundledPiCodingAgentWebScrapersPypi as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/rawg": bundledPiCodingAgentWebScrapersRawg as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/readthedocs": - bundledPiCodingAgentWebScrapersReadthedocs as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/reddit": bundledPiCodingAgentWebScrapersReddit as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/repology": bundledPiCodingAgentWebScrapersRepology as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/rfc": bundledPiCodingAgentWebScrapersRfc as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/rubygems": bundledPiCodingAgentWebScrapersRubygems as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/searchcode": - bundledPiCodingAgentWebScrapersSearchcode as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/sec-edgar": bundledPiCodingAgentWebScrapersSecEdgar as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/semantic-scholar": - bundledPiCodingAgentWebScrapersSemanticScholar as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/snapcraft": bundledPiCodingAgentWebScrapersSnapcraft as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/sourcegraph": - bundledPiCodingAgentWebScrapersSourcegraph as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/spdx": bundledPiCodingAgentWebScrapersSpdx as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/spotify": bundledPiCodingAgentWebScrapersSpotify as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/stackoverflow": - bundledPiCodingAgentWebScrapersStackoverflow as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/terraform": bundledPiCodingAgentWebScrapersTerraform as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/tldr": bundledPiCodingAgentWebScrapersTldr as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/twitter": bundledPiCodingAgentWebScrapersTwitter as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/types": bundledPiCodingAgentWebScrapersTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/utils": bundledPiCodingAgentWebScrapersUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/vimeo": bundledPiCodingAgentWebScrapersVimeo as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/vscode-marketplace": - bundledPiCodingAgentWebScrapersVscodeMarketplace as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/scrapers/w3c": bundledPiCodingAgentWebScrapersW3c as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/wikidata": bundledPiCodingAgentWebScrapersWikidata as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/wikipedia": bundledPiCodingAgentWebScrapersWikipedia as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/scrapers/youtube": bundledPiCodingAgentWebScrapersYoutube as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search/provider": bundledPiCodingAgentWebSearchProvider as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search/render": bundledPiCodingAgentWebSearchRender as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search/types": bundledPiCodingAgentWebSearchTypes as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search/utils": bundledPiCodingAgentWebSearchUtils as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-coding-agent/web/search/providers/anthropic": - bundledPiCodingAgentWebSearchProvidersAnthropic as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/base": - bundledPiCodingAgentWebSearchProvidersBase as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/brave": - bundledPiCodingAgentWebSearchProvidersBrave as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/codex": - bundledPiCodingAgentWebSearchProvidersCodex as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/duckduckgo": - bundledPiCodingAgentWebSearchProvidersDuckduckgo as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/exa": - bundledPiCodingAgentWebSearchProvidersExa as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/firecrawl": - bundledPiCodingAgentWebSearchProvidersFirecrawl as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/gemini": - bundledPiCodingAgentWebSearchProvidersGemini as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/jina": - bundledPiCodingAgentWebSearchProvidersJina as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/kagi": - bundledPiCodingAgentWebSearchProvidersKagi as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/kimi": - bundledPiCodingAgentWebSearchProvidersKimi as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/parallel": - bundledPiCodingAgentWebSearchProvidersParallel as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity-auth": - bundledPiCodingAgentWebSearchProvidersPerplexityAuth as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/perplexity": - bundledPiCodingAgentWebSearchProvidersPerplexity as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/searxng": - bundledPiCodingAgentWebSearchProvidersSearxng as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/synthetic": - bundledPiCodingAgentWebSearchProvidersSynthetic as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/tavily": - bundledPiCodingAgentWebSearchProvidersTavily as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/tinyfish": - bundledPiCodingAgentWebSearchProvidersTinyfish as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/utils": - bundledPiCodingAgentWebSearchProvidersUtils as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/xai": - bundledPiCodingAgentWebSearchProvidersXai as unknown as Readonly>, - "@oh-my-pi/pi-coding-agent/web/search/providers/zai": - bundledPiCodingAgentWebSearchProvidersZai as unknown as Readonly>, - "@oh-my-pi/pi-natives": bundledPiNatives as unknown as Readonly>, - "@oh-my-pi/pi-tui": bundledPiTui as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/box": bundledPiTuiComponentsBox as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/cancellable-loader": bundledPiTuiComponentsCancellableLoader as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-tui/components/editor": bundledPiTuiComponentsEditor as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/image": bundledPiTuiComponentsImage as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/input": bundledPiTuiComponentsInput as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/loader": bundledPiTuiComponentsLoader as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/markdown": bundledPiTuiComponentsMarkdown as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-tui/components/scroll-view": bundledPiTuiComponentsScrollView as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-tui/components/select-list": bundledPiTuiComponentsSelectList as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-tui/components/settings-list": bundledPiTuiComponentsSettingsList as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-tui/components/spacer": bundledPiTuiComponentsSpacer as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/tab-bar": bundledPiTuiComponentsTabBar as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/text": bundledPiTuiComponentsText as unknown as Readonly>, - "@oh-my-pi/pi-tui/components/truncated-text": bundledPiTuiComponentsTruncatedText as unknown as Readonly< - Record - >, - "@oh-my-pi/pi-utils": bundledPiUtils as unknown as Readonly>, - typebox: bundledTypeBoxShim as unknown as Readonly>, -}; diff --git a/packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts b/packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts index 20f55ad19..190aaf13b 100644 --- a/packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts +++ b/packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts @@ -4,79 +4,58 @@ import * as path from "node:path"; import * as url from "node:url"; import { isCompiledBinary, stripWindowsExtendedLengthPathPrefix } from "@oh-my-pi/pi-utils"; import { registerPluginCacheInvalidator } from "../../discovery/helpers"; -import { BUNDLED_PI_REGISTRY_KEYS } from "./legacy-pi-bundled-keys"; const IS_COMPILED_BINARY = isCompiledBinary(); -// === Bundled host-package registry (issue #3423) === +// === Bundled host modules (issue #3423) === // // Bun 1.3.14 stopped exposing `--compile` extras through any filesystem-style // API: `fs.existsSync`, `Bun.file().exists()`, `Bun.resolveSync`, and even // `import("/$bunfs/...")` / `import("file:///$bunfs/...")` all fail for the -// embedded entries — only the main binary itself answers from -// `/$bunfs/root/`. The previous strategy of rewriting -// `@(scope)/pi-*` imports to a `file:///$bunfs/...` URL therefore breaks -// every legacy extension in compiled mode (issue #3423; see also issues -// #3329, #2168). Bun.plugin `onResolve` for bare specifiers also no longer -// fires for transitive imports inside runtime-loaded extensions, so the -// fallback hook in `installLegacyPiSpecifierShim()` cannot rescue them. +// embedded entries. Bun.plugin `onResolve` also no longer fires for transitive +// imports inside runtime-loaded extensions. // -// Instead we keep a JS-heap reference to every bundled pi-* surface (the -// canonical host packages and the legacy shims) and re-export them through a -// Bun.plugin `onLoad` against a custom namespace. Extension source rewrites -// emit `omp-legacy-pi-bundled:` specifiers that the synthetic loader -// resolves against the registry — no bunfs path ever leaves this module in -// compiled mode. Dev / source-link / installed-package modes keep the -// historical `file://` rewrite (the source files exist on disk and load fine -// through Bun's standard URL loader). -// -// The registry lives in a sibling file (`legacy-pi-bundled-registry.ts`) -// loaded via a conditional dynamic import: its transitive deps include the -// coding-agent root which pulls in generated artifacts (e.g. -// `export/html/tool-views.generated.js`) that only exist after a build, so a -// static import would crash every dev/test run that touches -// `legacy-pi-compat.ts`. This is the documented "conditional platform code" -// exception to the static-import rule. +// Compiled builds therefore keep live JS-heap references to the host packages +// and serve requested surfaces through `omp-legacy-pi-bundled:` synthetic +// modules. `scripts/legacy-pi-virtual-module.ts` derives the static import edges +// from current package exports inside a Bun build plugin: no generated source +// or duplicate key list exists on disk. Runtime extension loading stays lazy — +// the virtual module is evaluated only when an extension requests a host +// package — but the compiler still sees every possible edge at build time. const BUNDLED_VIRTUAL_SCHEME = "omp-legacy-pi-bundled:"; const BUNDLED_VIRTUAL_NAMESPACE = "omp-legacy-pi-bundled"; -const BUNDLED_REGISTRY_GLOBAL = "__ompLegacyPiBundledRegistry"; -const TYPEBOX_BUNDLED_REGISTRY_KEY = "typebox"; +const BUNDLED_MODULES_GLOBAL = "__ompLegacyPiBundledModules"; +const TYPEBOX_BUNDLED_MODULE_KEY = "typebox"; -type BundledRegistry = Readonly>>>; +type BundledModules = Readonly>>>; -let bundledRegistryPromise: Promise | null = null; +let bundledModulesPromise: Promise | null = null; /** - * Lazy-load the bundled host-package registry and stash it on `globalThis` - * for the synthetic loader emitted by `synthesizeBundledModuleSource`. + * Lazy-load the build-supplied host modules and stash them on `globalThis` for + * the synthetic module source emitted by `synthesizeBundledModuleSource`. * - * `globalThis` is the bridge, not laziness: each synthesized - * `omp-legacy-pi-bundled:` module is a *separate* ES module Bun compiles - * from a source string, so it cannot close over the registry in this file's - * lexical scope and the live (non-serializable) function/object exports cannot - * be inlined — the only runtime channel back to the host objects is a global. - * - * The dynamic import is gated by `IS_COMPILED_BINARY` so dev/test runs (where - * the registry's transitive deps include build-time-generated artifacts) - * never trigger the cascade. + * `globalThis` is the bridge: each `omp-legacy-pi-bundled:` source string + * becomes a separate ES module and cannot close over this file's lexical scope. + * The dynamic import is intentional conditional build code. Dev/test runs + * never execute it; binary builds resolve the literal through the in-memory + * plugin in `scripts/legacy-pi-virtual-module.ts`. */ -function ensureBundledRegistryLoaded(): Promise { +function ensureBundledModulesLoaded(): Promise { if (!IS_COMPILED_BINARY) { - return Promise.reject( - new Error("omp:legacy-pi-shim: bundled registry is only available in compiled-binary mode"), - ); + return Promise.reject(new Error("omp:legacy-pi-shim: bundled modules are only available in compiled mode")); } - if (!bundledRegistryPromise) { - bundledRegistryPromise = import("./legacy-pi-bundled-registry").then(m => { - (globalThis as Record)[BUNDLED_REGISTRY_GLOBAL] = m.BUNDLED_PI_REGISTRY; - return m.BUNDLED_PI_REGISTRY; + if (!bundledModulesPromise) { + bundledModulesPromise = import("omp-legacy-pi-modules").then(module => { + Reflect.set(globalThis, BUNDLED_MODULES_GLOBAL, module.BUNDLED_PI_MODULES); + return module.BUNDLED_PI_MODULES; }); } - return bundledRegistryPromise; + return bundledModulesPromise; } -function bundledRegistryVirtualSpecifier(registryKey: string): string { - return `${BUNDLED_VIRTUAL_SCHEME}${registryKey}`; +function bundledModuleVirtualSpecifier(moduleKey: string): string { + return `${BUNDLED_VIRTUAL_SCHEME}${moduleKey}`; } function isBundledVirtualSpecifier(value: string): boolean { @@ -84,19 +63,16 @@ function isBundledVirtualSpecifier(value: string): boolean { } /** - * Build the synthetic ES module source for a `omp-legacy-pi-bundled:` - * import against an explicit registry. Pure: takes the live module namespace - * and emits a string of ES exports rooted in `globalThis[BUNDLED_REGISTRY_GLOBAL]`. - * `synthesizeBundledModuleSource` wraps this with the lazy registry load — - * tests use this sync helper directly to assert export-shape preservation. + * Build a synthetic ES module for one live bundled namespace. Every export + * reads through the global bridge; no bunfs path or copied package is involved. */ -function synthesizeBundledModuleSourceFromRegistry(registryKey: string, registry: BundledRegistry): string { - const mod = registry[registryKey]; +function synthesizeBundledModuleSourceFromModules(moduleKey: string, modules: BundledModules): string { + const mod = modules[moduleKey]; if (!mod) { - throw new Error(`omp:legacy-pi-shim: no bundled module registered for ${registryKey}`); + throw new Error(`omp:legacy-pi-shim: no bundled module registered for ${moduleKey}`); } const lines: string[] = [ - `const __omp_bundled = globalThis[${JSON.stringify(BUNDLED_REGISTRY_GLOBAL)}][${JSON.stringify(registryKey)}];`, + `const __omp_bundled = globalThis[${JSON.stringify(BUNDLED_MODULES_GLOBAL)}][${JSON.stringify(moduleKey)}];`, ]; let hasDefault = false; for (const exportName in mod) { @@ -114,36 +90,25 @@ function synthesizeBundledModuleSourceFromRegistry(registryKey: string, registry } /** - * Build the synthetic ES module source served for an - * `omp-legacy-pi-bundled:` import. Enumerates the live module namespace - * so legacy extensions see the same named/default exports they would have - * gotten from a real `file://` load — without touching the inaccessible bunfs - * filesystem. + * Build the synthetic source served for one + * `omp-legacy-pi-bundled:` import. */ -async function synthesizeBundledModuleSource(registryKey: string): Promise { - const registry = await ensureBundledRegistryLoaded(); - return synthesizeBundledModuleSourceFromRegistry(registryKey, registry); +async function synthesizeBundledModuleSource(moduleKey: string): Promise { + const modules = await ensureBundledModulesLoaded(); + return synthesizeBundledModuleSourceFromModules(moduleKey, modules); } -/** - * Test seam: builds the synthetic ES module source for a virtual specifier - * against an explicit registry. Pure (no globalThis read); the emitted source - * still routes runtime lookups through `globalThis[BUNDLED_REGISTRY_GLOBAL]`. - */ -export function __synthesizeLegacyPiBundledSourceWithRegistry( - registryKey: string, - registry: Readonly>>>, +/** Test seam for the virtual module's named/default export forwarding. */ +export function __synthesizeLegacyPiBundledSourceWithModules( + moduleKey: string, + modules: Readonly>>>, ): string { - return synthesizeBundledModuleSourceFromRegistry(registryKey, registry); + return synthesizeBundledModuleSourceFromModules(moduleKey, modules); } -/** - * Test seam: returns the globalThis key the synthetic loader reads from. Tests - * assert that the emitted source addresses the exact stash key the install - * function writes to, so a rename can't break extension loads silently. - */ -export function __getLegacyPiBundledRegistryGlobal(): string { - return BUNDLED_REGISTRY_GLOBAL; +/** Test seam for the global bridge key shared with synthetic module source. */ +export function __getLegacyPiBundledModulesGlobal(): string { + return BUNDLED_MODULES_GLOBAL; } // Canonical scope for in-process pi packages. Plugins published against any of @@ -207,6 +172,9 @@ const nodePackageRootCache = new Map>(); const packageManifestCache = new Map | null>>(); const bareDependencyResolutionCache = new Map>(); const realpathCache = new Map>(); +const nativeAddonResolutionCache = new Map>(); +const nativeAddonRequireScanCache = new Map>(); +const nativeAddonLoaderModulePaths = new Set(); function clearLegacyPiResolutionCaches(): void { resolvedSpecifierFallbacks.clear(); @@ -215,6 +183,9 @@ function clearLegacyPiResolutionCaches(): void { nodePackageRootCache.clear(); packageManifestCache.clear(); bareDependencyResolutionCache.clear(); + nativeAddonResolutionCache.clear(); + nativeAddonRequireScanCache.clear(); + nativeAddonLoaderModulePaths.clear(); realpathCache.clear(); } @@ -232,7 +203,7 @@ const TYPEBOX_SPECIFIER_FILTER = /^(?:@sinclair\/typebox|typebox)$/; // Compat-shim path resolution. In compiled-binary mode every bundled surface // is served through the `omp-legacy-pi-bundled:` virtual namespace (see the -// registry block above) — bunfs paths are unreachable on Bun 1.3.14+, so the +// bundled-module block above) — bunfs paths are unreachable on Bun 1.3.14+, so the // pre-#3423 helpers that derived `/$bunfs/root/...` paths from // `import.meta.dir` are gone. Dev / source-link / installed-package modes // still need a real filesystem path for the source shims, which @@ -298,7 +269,7 @@ export function __resolveTypeBoxShimPath( pathExistsSync: (p: string) => boolean = fs.existsSync, ): string | null { if (isCompiled) { - return bundledRegistryVirtualSpecifier(TYPEBOX_BUNDLED_REGISTRY_KEY); + return bundledModuleVirtualSpecifier(TYPEBOX_BUNDLED_MODULE_KEY); } return pathExistsSync(sourcePath) ? sourcePath : null; } @@ -314,18 +285,18 @@ const TYPEBOX_SHIM_PATH = __resolveTypeBoxShimPath(IS_COMPILED_BINARY, sourceShi // imports such as `@oh-my-pi/pi-ai/oauth` continue to resolve directly // against the bundled pi-ai package. const LEGACY_PI_AI_SHIM_PATH = IS_COMPILED_BINARY - ? bundledRegistryVirtualSpecifier(`${CANONICAL_PI_SCOPE}/pi-ai`) + ? bundledModuleVirtualSpecifier(`${CANONICAL_PI_SCOPE}/pi-ai`) : sourceShimPath("legacy-pi-ai-shim.ts"); // The coding-agent's own `./src/index.ts` cannot be listed as an extra // `bun --compile` entrypoint alongside the CLI entry without breaking binary // startup (issue #1474 follow-up). In compiled-binary mode the legacy // `@(scope)/pi-coding-agent` root therefore resolves through the bundled -// registry shim; in dev / source-link / installed-package mode it points at -// the sibling source shim whose distinct file path avoids the #1474 collision +// module shim; in dev / source-link / installed-package mode it points at the +// sibling source shim whose distinct file path avoids the #1474 collision // while still re-exporting the canonical package surface. const LEGACY_PI_CODING_AGENT_SHIM_PATH = IS_COMPILED_BINARY - ? bundledRegistryVirtualSpecifier(`${CANONICAL_PI_SCOPE}/pi-coding-agent`) + ? bundledModuleVirtualSpecifier(`${CANONICAL_PI_SCOPE}/pi-coding-agent`) : sourceShimPath("legacy-pi-coding-agent-shim.ts"); // Package-root overrides. Shim entries (`pi-ai`, `pi-coding-agent`) always @@ -346,8 +317,8 @@ const LEGACY_PI_CODING_AGENT_SHIM_PATH = IS_COMPILED_BINARY /** * Drop overrides whose filesystem targets are missing so they can fall * through to the canonical-resolution path. Virtual `omp-legacy-pi-bundled:` - * entries always pass — the bundled registry is the source of truth in - * compiled-binary mode where bunfs paths are unreachable (issue #3423). + * entries always pass — live bundled module references are the source of truth + * in compiled mode where bunfs paths are unreachable (issue #3423). * * `pathExistsSync` defaults to `fs.existsSync`; tests inject a stub to * simulate the missing-entrypoint failure mode without touching the real FS. @@ -356,41 +327,59 @@ export function __validateLegacyPiPackageRootOverrides( candidates: Record, pathExistsSync: (p: string) => boolean = fs.existsSync, ): Record { - return Object.fromEntries( - Object.entries(candidates).filter( - ([, candidate]) => isBundledVirtualSpecifier(candidate) || pathExistsSync(candidate), - ), - ); + const valid: Record = {}; + for (const key in candidates) { + const candidate = candidates[key]; + if (candidate && (isBundledVirtualSpecifier(candidate) || pathExistsSync(candidate))) { + valid[key] = candidate; + } + } + return valid; } /** * Compute the override map keyed by every canonical specifier the host serves * directly: the pi-ai / pi-coding-agent roots (compat shims that re-attach - * legacy helpers) plus, in compiled-binary mode, every other canonical pi-* - * package root AND every non-wildcard subpath registered in the bundled - * registry (see `legacy-pi-bundled-keys.ts`). Subpath coverage is what stops - * `@(scope)/pi-ai/oauth` and friends from falling through to the extension's - * own — possibly absent — peer install when bunfs filesystem walks fail - * (issue #3442 follow-up to #3423). Exported as a test seam so the - * compiled-binary branch is verifiable from dev tests. + * legacy helpers) plus, in compiled mode, every build-supplied module key. + * Subpath coverage stops `@(scope)/pi-ai/oauth` and friends from falling + * through to the extension's absent peer install when bunfs walks fail. */ -export function __buildLegacyPiPackageRootOverrides(isCompiled: boolean): Record { +export function __buildLegacyPiPackageRootOverrides( + isCompiled: boolean, + bundledModuleKeys: Iterable = [], +): Record { const candidates: Record = { [`${CANONICAL_PI_SCOPE}/pi-ai`]: LEGACY_PI_AI_SHIM_PATH, [`${CANONICAL_PI_SCOPE}/pi-coding-agent`]: LEGACY_PI_CODING_AGENT_SHIM_PATH, }; if (isCompiled) { - for (const key of BUNDLED_PI_REGISTRY_KEYS) { - // Shim-bearing roots above already mapped to their compat surface; - // the bundled typebox shim has a dedicated TYPEBOX_SHIM_PATH route. - if (key in candidates || key === TYPEBOX_BUNDLED_REGISTRY_KEY) continue; - candidates[key] = bundledRegistryVirtualSpecifier(key); + for (const key of bundledModuleKeys) { + // Shim-bearing roots already map to their compat surfaces; TypeBox + // has a dedicated TYPEBOX_SHIM_PATH route. + if (key in candidates || key === TYPEBOX_BUNDLED_MODULE_KEY) continue; + candidates[key] = bundledModuleVirtualSpecifier(key); } } return __validateLegacyPiPackageRootOverrides(candidates); } -const LEGACY_PI_PACKAGE_ROOT_OVERRIDES = __buildLegacyPiPackageRootOverrides(IS_COMPILED_BINARY); +// Seeded with compat roots at module init; first compiled extension load adds +// every key supplied by the in-memory build module. +let legacyPiPackageRootOverrides = __buildLegacyPiPackageRootOverrides(IS_COMPILED_BINARY); +let legacyPiOverridesReadyPromise: Promise | null = null; + +/** Complete compiled-mode overrides once from the lazily evaluated host modules. */ +function ensureLegacyPiOverridesReady(): Promise { + if (!IS_COMPILED_BINARY) { + return Promise.resolve(); + } + if (!legacyPiOverridesReadyPromise) { + legacyPiOverridesReadyPromise = ensureBundledModulesLoaded().then(modules => { + legacyPiPackageRootOverrides = __buildLegacyPiPackageRootOverrides(true, Object.keys(modules)); + }); + } + return legacyPiOverridesReadyPromise; +} let isLegacyPiSpecifierShimInstalled = false; @@ -428,7 +417,7 @@ function getResolvedSpecifier(specifier: string): string { * specifiers. */ function resolveCanonicalPiSpecifier(remappedSpecifier: string): string { - const override = LEGACY_PI_PACKAGE_ROOT_OVERRIDES[remappedSpecifier]; + const override = legacyPiPackageRootOverrides[remappedSpecifier]; if (override) { return override; } @@ -438,7 +427,7 @@ function resolveCanonicalPiSpecifier(remappedSpecifier: string): string { function toImportSpecifier(resolvedPath: string): string { // Virtual `omp-legacy-pi-bundled:` specifiers are served by the synthetic // onLoad in `installLegacyPiSpecifierShim()`; wrapping them as `file://` - // would corrupt the scheme and bypass the bundled registry. + // would corrupt the scheme. if (isBundledVirtualSpecifier(resolvedPath)) { return resolvedPath; } @@ -492,6 +481,9 @@ async function rewriteLegacyExtensionSource( importerPath: string, mtimeTag: string | null = null, ): Promise { + // Compiled mode completes the override map from the build-supplied module + // keys on first use; every rewrite path must see the full map. + await ensureLegacyPiOverridesReady(); const withPi = rewriteLegacyPiImports(source); // When the TypeBox shim is missing (release build dropped the entrypoint — // issue #3414), leave bare specifiers untouched so Bun resolves a real @@ -506,10 +498,11 @@ async function rewriteLegacyExtensionSource( : withPi; const withPkg = await rewriteExtensionPackageImports(withTypeBox, importerPath, mtimeTag); const withBare = await rewriteExtensionBareImports(withPkg, importerPath, mtimeTag); + const withNativeAddons = await rewriteExtensionNativeAddonRequires(withBare, importerPath); if (!mtimeTag) { - return withBare; + return withNativeAddons; } - return withBare.replace( + return withNativeAddons.replace( RELATIVE_GRAPH_IMPORT_SPECIFIER_REGEX, (_match, prefix: string, specifier: string, suffix: string) => `${prefix}${specifier}?mtime=${mtimeTag}${suffix}`, ); @@ -950,6 +943,118 @@ async function resolveExtensionBareDependencyUncached(specifier: string, importe return resolveNodePackageDependency(specifier, importerPath); } +const NATIVE_ADDON_EXTENSION = ".node"; + +// Match CommonJS require calls so bare native-addon specifiers can be pinned +// to absolute paths. Only requires whose resolution lands on a `.node` addon +// are rewritten; everything else stays on Bun's native resolver. +const NATIVE_ADDON_REQUIRE_SPECIFIER_REGEX = /(\brequire\s*\(\s*["'])([^"'()\s]+)(["']\s*\))/g; + +/** + * Resolve a bare specifier whose target is a native `.node` addon — either a + * package subpath ending in `.node`, or a package whose `main` points at an + * addon (the napi-rs per-platform package convention, e.g. + * `@yuuang/ffi-rs-darwin-arm64` → `ffi-rs.darwin-arm64.node`). Returns the + * addon's absolute realpath, or null when the specifier is not a native addon. + */ +async function resolveExtensionNativeAddon(specifier: string, importerPath: string): Promise { + if (!isBareExtensionDependencySpecifier(specifier)) { + return null; + } + + const cacheKey = `${specifier}\0${path.resolve(path.dirname(importerPath))}`; + const cached = nativeAddonResolutionCache.get(cacheKey); + if (cached) return cached; + + const promise = resolveExtensionNativeAddonUncached(specifier, importerPath); + nativeAddonResolutionCache.set(cacheKey, promise); + return promise; +} + +async function resolveExtensionNativeAddonUncached(specifier: string, importerPath: string): Promise { + const parsed = splitBarePackageSpecifier(specifier); + if (!parsed) return null; + const packageRoot = await findNodePackageRoot(parsed.name, importerPath); + if (!packageRoot) return null; + + let target: string | null = null; + if (parsed.subpath !== null) { + target = parsed.subpath.endsWith(NATIVE_ADDON_EXTENSION) ? path.join(packageRoot, parsed.subpath) : null; + } else { + const manifest = await readPackageManifest(packageRoot); + const main = manifest?.main; + target = + typeof main === "string" && main.endsWith(NATIVE_ADDON_EXTENSION) ? path.resolve(packageRoot, main) : null; + } + if (!target || !(await pathExists(target))) { + return null; + } + return realpathOrSelf(target); +} + +/** + * Rewrite bare `require()` specifiers that resolve to native `.node` addons + * into absolute-path requires. In `bun build --compile` binaries, Bun's bare + * resolution fails for packages whose `main` is a `.node` addon ("Cannot find + * module '@scope/pkg-'") even when the package sits in the + * extension's own node_modules; requiring the addon by absolute path works. + */ +async function rewriteExtensionNativeAddonRequires(source: string, importerPath: string): Promise { + let rewritten = ""; + let lastIndex = 0; + for (const match of source.matchAll(NATIVE_ADDON_REQUIRE_SPECIFIER_REGEX)) { + const matchIndex = match.index; + if (matchIndex === undefined) continue; + + const [fullMatch, prefix, specifier, suffix] = match; + if (!prefix || !specifier || !suffix) continue; + + const resolved = await resolveExtensionNativeAddon(specifier, importerPath); + if (!resolved) continue; + + rewritten += source.slice(lastIndex, matchIndex); + // Forward slashes keep Windows paths valid inside single- or double-quoted literals. + rewritten += `${prefix}${stripWindowsExtendedLengthPathPrefix(resolved).replaceAll("\\", "/")}${suffix}`; + lastIndex = matchIndex + fullMatch.length; + } + + if (lastIndex === 0) { + return source; + } + return `${rewritten}${source.slice(lastIndex)}`; +} + +/** + * Whether a module's source contains a bare require that resolves to a native + * `.node` addon — i.e. a napi-rs style loader that must be hooked into the + * extension graph so {@link rewriteExtensionNativeAddonRequires} can pin its + * platform-package requires to absolute paths. + */ +async function moduleRequiresNativeAddon(modulePath: string): Promise { + const cached = nativeAddonRequireScanCache.get(modulePath); + if (cached) return cached; + + const promise = moduleRequiresNativeAddonUncached(modulePath); + nativeAddonRequireScanCache.set(modulePath, promise); + return promise; +} + +async function moduleRequiresNativeAddonUncached(modulePath: string): Promise { + let source: string; + try { + source = await Bun.file(modulePath).text(); + } catch { + return false; + } + for (const match of source.matchAll(NATIVE_ADDON_REQUIRE_SPECIFIER_REGEX)) { + const specifier = match[2]; + if (specifier && (await resolveExtensionNativeAddon(specifier, modulePath))) { + return true; + } + } + return false; +} + async function rewriteExtensionBareImports( source: string, importerPath: string, @@ -986,7 +1091,9 @@ function escapeRegExp(value: string): string { // `imports` aliases such as `#src/*`, and extension-local bare dependency // entries. Bare imports inside node_modules dependencies remain native Bun // resolutions; once the dependency entry is hooked, its relative children are -// still collected and rewritten with the reload mtime tag. +// still collected and rewritten with the reload mtime tag. `require()` calls +// are scanned too so CJS entries and napi-rs loaders reached without an +// import statement still join the graph. const EXTENSION_GRAPH_SPECIFIER_REGEX = /((?:from\s+|import\s+|import\s*\(\s*)["'])([^"'()\s]+)(["'])/g; // Extension source realpaths already covered by an installed load-time hook for @@ -1027,6 +1134,10 @@ async function realpathOrSelfUncached(p: string): Promise { * Extension-local bare dependency entries are also included so their relative * children receive the reload mtime tag; bare imports inside those dependencies * remain native Bun resolutions to avoid taking over full third-party graphs. + * CommonJS dependency entries stay native too, with one exception: napi-rs + * style loaders whose bare requires resolve to `.node` addons are hooked so + * their requires can be pinned to absolute paths (unresolvable by bare + * specifier inside `bun build --compile` binaries). */ async function collectExtensionModules(entryRealPath: string): Promise> { const modules = new Map(); @@ -1047,14 +1158,24 @@ async function collectExtensionModules(entryRealPath: string): Promise(); for (const match of source.matchAll(EXTENSION_GRAPH_SPECIFIER_REGEX)) { - const specifier = match[2]; - if (!specifier) continue; + if (match[2]) specifiers.add(match[2]); + } + for (const match of source.matchAll(NATIVE_ADDON_REQUIRE_SPECIFIER_REGEX)) { + if (match[2]) specifiers.add(match[2]); + } + for (const specifier of specifiers) { try { let resolved: string | null = null; let nextFollowsBareDependencies = followBareDependencies; @@ -1079,10 +1200,17 @@ async function collectExtensionModules(entryRealPath: string): Promise): void { - const alternation = [...modules.keys()].map(escapeRegExp).join("|"); - const filter = new RegExp(`^(?:${alternation})(?:\\?mtime=\\d+)?$`); - const hookId = Bun.hash(`${entryRealPath}\0${[...modules.keys()].join("\0")}`).toString(36); - Bun.plugin({ - name: `omp:legacy-pi-ext:${hookId}`, - setup(build) { - build.onLoad({ filter, namespace: "file" }, async args => { - const queryIndex = args.path.indexOf("?mtime="); - const sourcePath = queryIndex >= 0 ? args.path.slice(0, queryIndex) : args.path; - const mtimeTag = queryIndex >= 0 ? args.path.slice(queryIndex + "?mtime=".length) : null; - const cached = modules.get(sourcePath); - let raw: string; - if (cached !== undefined) { - // consume-once: preserves ?mtime edit-pickup for the re-imported entry - modules.delete(sourcePath); - raw = cached; - } else { - raw = await Bun.file(sourcePath).text(); - } - return { - contents: await rewriteLegacyExtensionSource(raw, sourcePath, mtimeTag), - loader: getLoader(sourcePath), - }; - }); - }, - }); + const asyncModules = new Map(); + const syncCommonJsModules = new Map(); + for (const [modulePath, source] of modules) { + const destination = nativeAddonLoaderModulePaths.has(modulePath) ? syncCommonJsModules : asyncModules; + destination.set(modulePath, source); + } + + if (asyncModules.size > 0) { + const alternation = [...asyncModules.keys()].map(escapeRegExp).join("|"); + const filter = new RegExp(`^(?:${alternation})(?:\\?mtime=\\d+)?$`); + const hookId = Bun.hash(`${entryRealPath}\0async\0${[...asyncModules.keys()].join("\0")}`).toString(36); + Bun.plugin({ + name: `omp:legacy-pi-ext:${hookId}`, + setup(build) { + build.onLoad({ filter, namespace: "file" }, async args => { + const queryIndex = args.path.indexOf("?mtime="); + const sourcePath = queryIndex >= 0 ? args.path.slice(0, queryIndex) : args.path; + const mtimeTag = queryIndex >= 0 ? args.path.slice(queryIndex + "?mtime=".length) : null; + const cached = asyncModules.get(sourcePath); + let raw: string; + if (cached !== undefined) { + // consume-once: preserves ?mtime edit-pickup for re-imports + asyncModules.delete(sourcePath); + raw = cached; + } else { + raw = await Bun.file(sourcePath).text(); + } + return { + contents: await rewriteLegacyExtensionSource(raw, sourcePath, mtimeTag), + loader: getLoader(sourcePath), + }; + }); + }, + }); + } + + if (syncCommonJsModules.size > 0) { + const alternation = [...syncCommonJsModules.keys()].map(escapeRegExp).join("|"); + const filter = new RegExp(`^(?:${alternation})(?:\\?mtime=\\d+)?$`); + const hookId = Bun.hash(`${entryRealPath}\0sync-cjs\0${[...syncCommonJsModules.keys()].join("\0")}`).toString(36); + Bun.plugin({ + name: `omp:legacy-pi-ext:${hookId}`, + setup(build) { + build.onLoad({ filter, namespace: "file" }, args => { + const queryIndex = args.path.indexOf("?mtime="); + const sourcePath = queryIndex >= 0 ? args.path.slice(0, queryIndex) : args.path; + const source = syncCommonJsModules.get(sourcePath); + if (source === undefined) { + throw new Error(`Missing pre-rewritten CommonJS extension source: ${sourcePath}`); + } + return { contents: source, loader: getLoader(sourcePath) }; + }); + }, + }); + } } /** @@ -1184,6 +1340,7 @@ export async function loadLegacyPiModule(resolvedPath: string): Promise // `bun link`/pnpm installs) so the rewrite filter matches the path Bun // actually hands the hook. const entryRealPath = await realpathOrSelf(path.resolve(resolvedPath)); + await ensureLegacyPiOverridesReady(); const pendingSources = await ensureExtensionGraphHook(entryRealPath); try { // Dynamic import is required: legacy extension entry paths are user/plugin supplied at runtime. @@ -1261,9 +1418,8 @@ export function installLegacyPiSpecifierShim(): void { setup(build) { build.onResolve({ filter: LEGACY_PI_SPECIFIER_FILTER, namespace: "file" }, resolveLegacyPiSpecifier); build.onResolve({ filter: TYPEBOX_SPECIFIER_FILTER, namespace: "file" }, resolveTypeBoxSpecifier); - // Compiled-binary mode: serve `omp-legacy-pi-bundled:` imports - // from the JS-heap registry. The rewrite path emits these specifiers - // in place of unreachable `file:///$bunfs/...` URLs (issue #3423). + // Compiled mode serves `omp-legacy-pi-bundled:` imports from + // live host module references. No bunfs path leaves this loader. build.onLoad({ filter: /.*/, namespace: BUNDLED_VIRTUAL_NAMESPACE }, async args => { return { contents: await synthesizeBundledModuleSource(args.path), loader: "js" }; }); diff --git a/packages/coding-agent/src/extensibility/plugins/legacy-pi-virtual-modules.d.ts b/packages/coding-agent/src/extensibility/plugins/legacy-pi-virtual-modules.d.ts new file mode 100644 index 000000000..4756cab74 --- /dev/null +++ b/packages/coding-agent/src/extensibility/plugins/legacy-pi-virtual-modules.d.ts @@ -0,0 +1,4 @@ +declare module "omp-legacy-pi-modules" { + /** Host package namespaces retained by the compiled binary for legacy extensions. */ + export const BUNDLED_PI_MODULES: Readonly>>>; +} diff --git a/packages/coding-agent/src/internal-urls/docs-index.generated.txt b/packages/coding-agent/src/internal-urls/docs-index.generated.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/coding-agent/src/internal-urls/docs-index.ts b/packages/coding-agent/src/internal-urls/docs-index.ts index 77ccf1f6d..abe3d4d9a 100644 --- a/packages/coding-agent/src/internal-urls/docs-index.ts +++ b/packages/coding-agent/src/internal-urls/docs-index.ts @@ -16,7 +16,7 @@ import * as path from "node:path"; import { promisify } from "node:util"; import { gunzip } from "node:zlib"; import { Glob } from "bun"; -import docsEmbed from "./docs-index.generated.txt"; +const docsEmbed = process.env.PI_DOCS_EMBED ?? ""; const gunzipAsync = promisify(gunzip); diff --git a/packages/coding-agent/test/extensibility/legacy-pi-bundled-subpath-overrides.test.ts b/packages/coding-agent/test/extensibility/legacy-pi-bundled-subpath-overrides.test.ts index 27ad9733f..26a3e8daf 100644 --- a/packages/coding-agent/test/extensibility/legacy-pi-bundled-subpath-overrides.test.ts +++ b/packages/coding-agent/test/extensibility/legacy-pi-bundled-subpath-overrides.test.ts @@ -1,19 +1,21 @@ import { describe, expect, it } from "bun:test"; -import { BUNDLED_PI_REGISTRY_KEYS } from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-bundled-keys"; import { __buildLegacyPiPackageRootOverrides } from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-compat"; +import { collectBundledPiEntries } from "../../scripts/legacy-pi-virtual-module"; + +const bundledModuleKeys = new Set((await collectBundledPiEntries()).map(entry => entry.key)); // Regression for issue #3442: extension validation in compiled-binary mode // failed to resolve `@earendil-works/pi-ai/oauth` because the override map // only covered bare package roots — every non-wildcard subpath fell through // to `Bun.resolveSync`, which bunfs can't satisfy on Bun 1.3.14+, then the // `rewriteLegacyPiImports` catch left the original specifier in place and -// Bun's native resolver couldn't find a peer install. The fix seeds the -// override map with every key in `BUNDLED_PI_REGISTRY_KEYS` so subpath -// imports route to the same `omp-legacy-pi-bundled:` virtual namespace -// that already serves the roots. +// Bun's native resolver couldn't find a peer install. The build plugin now +// derives every module key from current package exports, so subpaths route to +// the same `omp-legacy-pi-bundled:` virtual namespace as package roots without +// a generated registry or duplicate key list. describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => { it("serves @oh-my-pi/pi-ai/oauth through the bundled virtual namespace in compiled mode", () => { - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); expect(overrides["@oh-my-pi/pi-ai/oauth"]).toBe("omp-legacy-pi-bundled:@oh-my-pi/pi-ai/oauth"); }); @@ -24,18 +26,18 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => // from `@mariozechner/pi-ai/utils/oauth/anthropic`) still hit the bunfs // fall-through. The generator now globs each wildcard's source pattern // and registers every concrete `.ts` match against the virtual namespace. - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); expect(overrides["@oh-my-pi/pi-ai/oauth/anthropic"]).toBe( "omp-legacy-pi-bundled:@oh-my-pi/pi-ai/oauth/anthropic", ); // Sanity: the wildcard expansion also reaches deeper subroots so plugins // pinned to e.g. `@oh-my-pi/pi-ai/providers/openai` keep resolving. - expect(BUNDLED_PI_REGISTRY_KEYS.has("@oh-my-pi/pi-ai/oauth/anthropic")).toBe(true); - expect(BUNDLED_PI_REGISTRY_KEYS.has("@oh-my-pi/pi-ai/oauth/openai-codex")).toBe(true); + expect(bundledModuleKeys.has("@oh-my-pi/pi-ai/oauth/anthropic")).toBe(true); + expect(bundledModuleKeys.has("@oh-my-pi/pi-ai/oauth/openai-codex")).toBe(true); }); it("expands web search provider wildcard exports for compiled plugin imports", () => { - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); const providerKeys = [ "@oh-my-pi/pi-coding-agent/web/search/providers/xai", "@oh-my-pi/pi-coding-agent/web/search/providers/tinyfish", @@ -44,7 +46,7 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => ] as const; for (const key of providerKeys) { - expect(BUNDLED_PI_REGISTRY_KEYS.has(key)).toBe(true); + expect(bundledModuleKeys.has(key)).toBe(true); expect(overrides[key]).toBe(`omp-legacy-pi-bundled:${key}`); } }); @@ -55,8 +57,8 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => // binary entry's transitive graph. Plugins almost never import top-level // pi-* files directly, so we keep those routed via `Bun.resolveSync`. // Concrete check: `@oh-my-pi/pi-coding-agent/cli` is NOT bundled. - expect(BUNDLED_PI_REGISTRY_KEYS.has("@oh-my-pi/pi-coding-agent/cli")).toBe(false); - expect(BUNDLED_PI_REGISTRY_KEYS.has("@oh-my-pi/pi-coding-agent/main")).toBe(false); + expect(bundledModuleKeys.has("@oh-my-pi/pi-coding-agent/cli")).toBe(false); + expect(bundledModuleKeys.has("@oh-my-pi/pi-coding-agent/main")).toBe(false); }); it("does not bundle main-thread-unsafe worker entrypoints", () => { @@ -64,13 +66,13 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => // The compiled legacy registry is imported on the main thread while // validating plugin extensions, so enumerating these files recreates the // `js worker-entry: missing parentPort` failure from #3508. - expect(BUNDLED_PI_REGISTRY_KEYS.has("@oh-my-pi/pi-coding-agent/eval/js/worker-entry")).toBe(false); + expect(bundledModuleKeys.has("@oh-my-pi/pi-coding-agent/eval/js/worker-entry")).toBe(false); }); it("maps every bundled key (minus shimmed roots + typebox) to its virtual specifier in compiled mode", () => { - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); const missing: string[] = []; - for (const key of BUNDLED_PI_REGISTRY_KEYS) { + for (const key of bundledModuleKeys) { // pi-ai/pi-coding-agent roots intentionally use the legacy compat shims // (they re-attach `Type`, `defineTool`, etc. dropped from the canonical // package surface); typebox is served via TYPEBOX_SHIM_PATH. @@ -88,7 +90,7 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => // keys); the test asserts only that the roots stay distinct from the // canonical pi-* surface — extensions still see the `Type` / // `defineTool` helpers the canonical entrypoints dropped. - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); expect(overrides["@oh-my-pi/pi-ai"]).toBeDefined(); expect(overrides["@oh-my-pi/pi-ai"]).not.toBe("omp-legacy-pi-bundled:@oh-my-pi/pi-ai/oauth"); expect(overrides["@oh-my-pi/pi-coding-agent"]).toBeDefined(); @@ -107,7 +109,7 @@ describe("legacy pi compat compiled-mode subpath overrides (issue #3442)", () => // typebox is routed through `TYPEBOX_SHIM_PATH` + a dedicated onResolve // hook; mirroring it in the override map would double-register and the // virtual loader would race the dedicated shim path. - const overrides = __buildLegacyPiPackageRootOverrides(true); + const overrides = __buildLegacyPiPackageRootOverrides(true, bundledModuleKeys); expect(overrides).not.toHaveProperty("typebox"); }); }); diff --git a/packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts b/packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts index 0fece9ee8..9c4057f74 100644 --- a/packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts +++ b/packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts @@ -1,19 +1,15 @@ import { describe, expect, it } from "bun:test"; import { - __getLegacyPiBundledRegistryGlobal, - __synthesizeLegacyPiBundledSourceWithRegistry, + __getLegacyPiBundledModulesGlobal, + __synthesizeLegacyPiBundledSourceWithModules, } from "@oh-my-pi/pi-coding-agent/extensibility/plugins/legacy-pi-compat"; // Regression for issue #3423: Bun 1.3.14 made `--compile` extras unreachable -// via every filesystem-style API, so `legacy-pi-compat.ts` now routes -// canonical `@oh-my-pi/pi-*` imports through a virtual specifier whose body -// re-exports a live registry entry from `globalThis`. The synthesizer must -// preserve every named export (and a default if present) so legacy -// extensions see the same surface they would have through a real `file://` -// load — otherwise `import { foo } from "@oh-my-pi/pi-coding-agent"` raises -// `Export named 'foo' not found in module ...`. +// via every filesystem-style API. The compat layer now routes canonical +// `@oh-my-pi/pi-*` imports through virtual modules backed by live host module +// references. The synthesizer must preserve every named/default export. describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { - const registry = { + const modules = { "@oh-my-pi/pi-coding-agent": { VERSION: "16.1.17", defineTool: () => undefined, @@ -28,22 +24,22 @@ describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { Type: { Object: () => undefined }, }, }; - const globalKey = __getLegacyPiBundledRegistryGlobal(); + const globalKey = __getLegacyPiBundledModulesGlobal(); it("emits one ES named export per enumerable namespace key", () => { - const src = __synthesizeLegacyPiBundledSourceWithRegistry("@oh-my-pi/pi-coding-agent", registry); + const src = __synthesizeLegacyPiBundledSourceWithModules("@oh-my-pi/pi-coding-agent", modules); expect(src).toContain( `const __omp_bundled = globalThis[${JSON.stringify(globalKey)}]["@oh-my-pi/pi-coding-agent"];`, ); expect(src).toContain('export const VERSION = __omp_bundled["VERSION"];'); expect(src).toContain('export const defineTool = __omp_bundled["defineTool"];'); expect(src).toContain('export const Type = __omp_bundled["Type"];'); - // Every named export emerges from a live registry lookup — never the FS. + // Every named export emerges from a live module lookup — never the FS. expect(src).not.toMatch(/\$bunfs|file:\/\//); }); it("forwards `default` through `export default` so default imports survive", () => { - const src = __synthesizeLegacyPiBundledSourceWithRegistry("@oh-my-pi/pi-utils", registry); + const src = __synthesizeLegacyPiBundledSourceWithModules("@oh-my-pi/pi-utils", modules); expect(src).toContain("export default __omp_bundled.default;"); // Default and named exports coexist on the same module. expect(src).toContain('export const VERSION = __omp_bundled["VERSION"];'); @@ -51,12 +47,12 @@ describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { }); it("omits `default` line when the registered namespace has no default export", () => { - const src = __synthesizeLegacyPiBundledSourceWithRegistry("@oh-my-pi/pi-coding-agent", registry); + const src = __synthesizeLegacyPiBundledSourceWithModules("@oh-my-pi/pi-coding-agent", modules); expect(src).not.toContain("export default"); }); - it("throws when asked to synthesize a key the registry does not cover", () => { - expect(() => __synthesizeLegacyPiBundledSourceWithRegistry("@oh-my-pi/pi-not-bundled", registry)).toThrow( + it("throws when asked to synthesize a key the bundled modules do not cover", () => { + expect(() => __synthesizeLegacyPiBundledSourceWithModules("@oh-my-pi/pi-not-bundled", modules)).toThrow( /no bundled module registered for @oh-my-pi\/pi-not-bundled/, ); }); @@ -65,7 +61,7 @@ describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { // The emitted source MUST read from the exact key the install function // writes to — a rename of either side breaks every legacy extension // load with a `Cannot read properties of undefined` at first import. - const src = __synthesizeLegacyPiBundledSourceWithRegistry("typebox", registry); + const src = __synthesizeLegacyPiBundledSourceWithModules("typebox", modules); expect(src.startsWith(`const __omp_bundled = globalThis[${JSON.stringify(globalKey)}]["typebox"];`)).toBe(true); }); @@ -75,9 +71,9 @@ describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { // the inner globalThis lookup + property-getter pattern in isolation — // it would `throw` if the emitted code addressed the wrong stash key // or skipped an enumerable export. - (globalThis as Record)[globalKey] = registry; + Reflect.set(globalThis, globalKey, modules); try { - const src = __synthesizeLegacyPiBundledSourceWithRegistry("@oh-my-pi/pi-coding-agent", registry); + const src = __synthesizeLegacyPiBundledSourceWithModules("@oh-my-pi/pi-coding-agent", modules); // Strip the ES export prefix and run the body as a plain script so // we can read `__omp_bundled` from the returned closure. const body = src @@ -85,12 +81,15 @@ describe("legacy-pi bundled virtual module synthesizer (issue #3423)", () => { .filter(line => line.startsWith("const __omp_bundled")) .join("\n"); const fn = new Function(`${body}; return __omp_bundled;`); - const live = fn() as Record; - expect(live.VERSION).toBe("16.1.17"); - expect(typeof live.defineTool).toBe("function"); - expect(typeof live.Type).toBe("object"); + const live: unknown = fn(); + if (typeof live !== "object" || live === null) { + throw new Error("synthetic module did not resolve an object namespace"); + } + expect("VERSION" in live ? live.VERSION : undefined).toBe("16.1.17"); + expect(typeof ("defineTool" in live ? live.defineTool : undefined)).toBe("function"); + expect(typeof ("Type" in live ? live.Type : undefined)).toBe("object"); } finally { - delete (globalThis as Record)[globalKey]; + Reflect.deleteProperty(globalThis, globalKey); } }); }); diff --git a/packages/coding-agent/test/extensibility/legacy-pi-inplace-load.test.ts b/packages/coding-agent/test/extensibility/legacy-pi-inplace-load.test.ts index baa6a8181..6d8c384cf 100644 --- a/packages/coding-agent/test/extensibility/legacy-pi-inplace-load.test.ts +++ b/packages/coding-agent/test/extensibility/legacy-pi-inplace-load.test.ts @@ -520,6 +520,40 @@ describe("legacy-pi in-place module loading (issue #1674)", () => { expect(rewritten).toContain('from "node:path"'); }); + it("pins native-addon package requires to absolute extension paths", async () => { + const dir = await writePackage({ + "package.json": JSON.stringify({ name: "native-require-ext", version: "1.0.0" }), + "node_modules/@fixture/native-platform/package.json": JSON.stringify({ + name: "@fixture/native-platform", + version: "1.0.0", + main: "binding.node", + }), + "node_modules/@fixture/native-platform/binding.node": "native fixture", + "node_modules/plain-dep/package.json": JSON.stringify({ + name: "plain-dep", + version: "1.0.0", + main: "index.js", + }), + "node_modules/plain-dep/index.js": "module.exports = {};", + "index.ts": "", + }); + const importer = path.join(dir, "index.ts"); + const rewritten = await __rewriteLegacyExtensionSourceForTests( + [ + 'const binding = require("@fixture/native-platform");', + 'const plain = require("plain-dep");', + 'const local = require("./local.node");', + "export { binding, plain, local };", + ].join("\n"), + importer, + ); + + const addon = await fs.realpath(path.join(dir, "node_modules/@fixture/native-platform/binding.node")); + expect(rewritten).toContain(`require("${addon.replaceAll("\\", "/")}")`); + expect(rewritten).toContain('require("plain-dep")'); + expect(rewritten).toContain('require("./local.node")'); + }); + it("remaps legacy pi-ai utils/oauth subpaths to registry OAuth exports", async () => { const dir = await writePackage({ "package.json": JSON.stringify({ name: "legacy-oauth-ext", version: "1.0.0" }), diff --git a/packages/coding-agent/test/internal-urls/docs-index.test.ts b/packages/coding-agent/test/internal-urls/docs-index.test.ts index 46bdb9eef..e45a69501 100644 --- a/packages/coding-agent/test/internal-urls/docs-index.test.ts +++ b/packages/coding-agent/test/internal-urls/docs-index.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from "bun:test"; import { gzipSync } from "node:zlib"; import { decodeDocsIndex } from "@oh-my-pi/pi-coding-agent/internal-urls/docs-index"; -import { assertDocsIndexFresh } from "../../scripts/generate-docs-index"; function embed(files: readonly string[], bodies: readonly string[]): string { return `${JSON.stringify(files)}\n${Buffer.from(gzipSync(Buffer.from(JSON.stringify(bodies)))).toString("base64")}`; @@ -36,16 +35,3 @@ describe("decodeDocsIndex (embedded docs path)", () => { }); }); -describe("docs index freshness guard", () => { - it("rejects stale filename lists before bundling", () => { - expect(() => assertDocsIndexFresh(embed(["agent.md"], ["agent body"]), { files, bodies })).toThrow( - "Embedded docs index has 1 docs; source corpus has 2.", - ); - }); - - it("rejects stale bodies with matching filenames", () => { - expect(() => assertDocsIndexFresh(embed(files, ["old agent body", "read body"]), { files, bodies })).toThrow( - "Embedded docs index body mismatch for agent.md. Run `bun run gen:docs`.", - ); - }); -}); diff --git a/scripts/ci-release-build-binaries.ts b/scripts/ci-release-build-binaries.ts index 43c82d59b..79ff61b7e 100644 --- a/scripts/ci-release-build-binaries.ts +++ b/scripts/ci-release-build-binaries.ts @@ -3,29 +3,32 @@ import * as fs from "node:fs/promises"; import { createRequire } from "node:module"; import * as path from "node:path"; +import { compileCodingAgent } from "../packages/coding-agent/scripts/compile-binary"; interface BinaryTarget { id: string; platform: string; arch: string; - target: string; + target: Bun.Build.CompileTarget; outfile: string; } -interface PackageManifest { - version: string; -} - const repoRoot = path.join(import.meta.dir, ".."); const binariesDir = path.join(repoRoot, "packages", "coding-agent", "binaries"); -const entrypoint = "./packages/coding-agent/src/cli.ts"; -const transformersManifest: PackageManifest = createRequire(import.meta.url)("@huggingface/transformers/package.json"); +const entrypoint = path.join(repoRoot, "packages", "coding-agent", "src", "cli.ts"); +const transformersManifest: unknown = createRequire(import.meta.url)("@huggingface/transformers/package.json"); +if ( + typeof transformersManifest !== "object" || + transformersManifest === null || + !("version" in transformersManifest) || + typeof transformersManifest.version !== "string" +) { + throw new Error("@huggingface/transformers package manifest has no string version"); +} const transformersVersion = transformersManifest.version; -// Worker threads spawn `new Worker(Bun.main, { argv })` — they re-enter the -// binary's own entry module — so no separate worker modules are compiled. -// Legacy pi-* extension compat surfaces are served through an in-process -// virtual namespace (`legacy-pi-compat.ts`), reached via the main module -// graph, so no extra `--compile` entrypoints are required (issue #3423). +// Worker threads re-enter the binary's CLI entry module. Legacy Pi host +// modules are supplied by the in-memory compile plugin, so neither subsystem +// needs extra `--compile` entrypoints. const isDryRun = process.argv.includes("--dry-run"); const targets: BinaryTarget[] = [ { @@ -114,42 +117,23 @@ async function embedNative(target: BinaryTarget): Promise { }); } -function buildCompileCommand(target: BinaryTarget): string[] { - return [ - "bun", - "build", - "--compile", - "--no-compile-autoload-bunfig", - "--no-compile-autoload-dotenv", - "--no-compile-autoload-tsconfig", - "--no-compile-autoload-package-json", - "--minify-identifiers", - "--keep-names", - "--define", - 'process.env.PI_COMPILED="true"', - "--define", - `process.env.PI_TINY_TRANSFORMERS_VERSION=${JSON.stringify(transformersVersion)}`, - "--root", - ".", - "--target", - target.target, - entrypoint, - "--outfile", - target.outfile, - ]; -} - async function buildBinary(target: BinaryTarget): Promise { console.log(`Building ${target.outfile}...`); await embedNative(target); if (isDryRun) { - console.log(`DRY RUN ${buildCompileCommand(target).join(" ")}`); + console.log(`DRY RUN Bun.build target=${target.target} outfile=${target.outfile}`); return; } - const buildEnv = shouldAdhocSignDarwinBinary(target) ? { ...Bun.env, BUN_NO_CODESIGN_MACHO_BINARY: "1" } : Bun.env; - await runCommand(buildCompileCommand(target), repoRoot, buildEnv); - + await compileCodingAgent({ + repoRoot, + entrypoint, + outfile: path.join(repoRoot, target.outfile), + transformersVersion, + target: target.target, + minifyIdentifiers: true, + skipBuiltinCodesign: shouldAdhocSignDarwinBinary(target), + }); // Bun 1.3.12 emits a truncated Mach-O signature on darwin builds. if (shouldAdhocSignDarwinBinary(target)) { await runCommand(["codesign", "--force", "--sign", "-", path.join(repoRoot, target.outfile)], repoRoot); @@ -159,12 +143,12 @@ async function buildBinary(target: BinaryTarget): Promise { async function generateBundle(): Promise { if (isDryRun) { console.log("DRY RUN bun run gen:stats"); - console.log("DRY RUN bun run gen:docs"); + console.log("DRY RUN bun --cwd=packages/collab-web run gen:tool-views"); console.log("DRY RUN bun run gen:mupdf"); return; } await runCommand(["bun", "run", "gen:stats"], repoRoot); - await runCommand(["bun", "run", "gen:docs"], repoRoot); + await runCommand(["bun", "--cwd=packages/collab-web", "run", "gen:tool-views"], repoRoot); await runCommand(["bun", "run", "gen:mupdf"], repoRoot); } @@ -172,26 +156,13 @@ async function resetArtifacts(): Promise { if (isDryRun) { console.log("DRY RUN bun run gen:native:reset"); console.log("DRY RUN bun run gen:stats:reset"); - console.log("DRY RUN bun run gen:docs:reset"); console.log("DRY RUN bun run gen:mupdf:reset"); return; } await runCommand(["bun", "run", "gen:native:reset"], repoRoot); await runCommand(["bun", "run", "gen:stats:reset"], repoRoot); - await runCommand(["bun", "run", "gen:docs:reset"], repoRoot); await runCommand(["bun", "run", "gen:mupdf:reset"], repoRoot); } - -async function main(): Promise { - const requestedTargets = parseRequestedTargets(); - const selectedTargets = requestedTargets ? targets.filter(target => requestedTargets.has(target.id)) : targets; - - if (requestedTargets) { - const unknownTargets = [...requestedTargets].filter( - requestedTarget => !targets.some(target => target.id === requestedTarget), - ); - if (unknownTargets.length > 0) { - throw new Error(`Unknown release target(s): ${unknownTargets.join(", ")}`); } }