feat(FN-2709): migrate Hermes runtime plugin to pi-ai streaming client

- Replace Hermes pi module integration with pi-ai session streaming and updated runtime adapter contracts
- Remove legacy engine guard scaffolding and add hermes-stream-client coverage for streaming behavior
- Rewrite plugin and engine e2e tests to align with the new runtime flow and regenerate dist artifacts
- Update Hermes runtime README and package metadata to document pi-ai execution expectations
This commit is contained in:
Fusion
2026-04-27 11:32:05 -07:00
committed by gsxdsm
parent 597daeaf33
commit 626e768f39
33 changed files with 1010 additions and 635 deletions

View File

@@ -1,39 +1,14 @@
import { fileURLToPath } from "node:url";
import { defineConfig } from "vitest/config";
const requestedMaxWorkers = Number.parseInt(process.env.VITEST_MAX_WORKERS ?? "2", 10);
const maxWorkers = Math.max(1, Math.min(4, Number.isFinite(requestedMaxWorkers) ? requestedMaxWorkers : 2));
process.env.VITEST_MAX_WORKERS = String(maxWorkers);
const engineGuardStub = fileURLToPath(new URL("./src/__tests__/engine-guard-stub.ts", import.meta.url));
export default defineConfig({
resolve: {
alias: {
"@fusion/engine": fileURLToPath(new URL("../../packages/engine/src/index.ts", import.meta.url)),
},
},
test: {
include: ["src/**/*.test.ts"],
pool: "threads",
maxWorkers,
poolOptions: { threads: { minThreads: 1, maxThreads: maxWorkers }, forks: { minForks: 1, maxForks: maxWorkers } },
// ── Engine guard ──────────────────────────────────────────────────────
// This setup file installs a vi.mock("@fusion/engine") that throws if
// the real engine is loaded. All plugin tests must mock "../pi-module.js"
// (the seam) to prevent the real @fusion/engine import chain.
//
// If you introduce a test that genuinely needs @fusion/engine:
// 1. Create a setup-test-isolation.ts (HOME override) following the
// pattern in packages/core/src/__tests__/setup-test-isolation.ts
// 2. Add it to setupFiles BEFORE this guard
// 3. Add a vi.mock("@fusion/engine", ...) override in the test file
// or a dedicated setup file to replace the throwing mock
setupFiles: ["./src/__tests__/setup-engine-guard.ts"],
alias: {
// Resolve @fusion/engine to a local test stub so Vitest can register the
// guard mock without requiring built dist artifacts from packages/engine.
"@fusion/engine": engineGuardStub,
},
},
});