fix(runner): restore capability issue thread imports

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-08-11 18:26:48 +00:00
1 parent 00897dc7c1
commit 3cf6db82c1
2 files changed
+49 -4

No files matched your search

@@ -112,8 +112,35 @@ function capabilityCookie(request, surface, value, maxAgeSeconds = CAPABILITY_MA
}; SameSite=Strict`;
}
async function loadRunner() {
return import(new URL("../dist/index.js", import.meta.url).href);
async function importDistRunnerModule(relativePath) {
return import(new URL(`../dist/${relativePath}`, import.meta.url).href);
}
export async function loadCapabilityIssueThreadRunner(importModule = importDistRunnerModule) {
const [cleanRoom, liveSession, turnStream, issueThread, fixtureState, liveConsole] =
await Promise.all([
importModule("live/clean-room.js"),
importModule("live/live-session.js"),
importModule("live/turn-stream.js"),
importModule("issue-thread/index.js"),
importModule("mock-core/capability-control-plane-types.js"),
importModule("mock-core/live-console-demo-server.js"),
]);
// This package-owned server intentionally depends on private demo/live modules.
// Keep that dependency explicit instead of widening the package's public root.
return {
CAPABILITY_TURN_STREAM_HEADERS: turnStream.CAPABILITY_TURN_STREAM_HEADERS,
CAPABILITY_TURN_STREAM_SCHEMA: turnStream.CAPABILITY_TURN_STREAM_SCHEMA,
CapabilityLiveSessionService: liveSession.CapabilityLiveSessionService,
InMemoryCapabilityLiveSessionStore: liveSession.InMemoryCapabilityLiveSessionStore,
assertLiveConsoleLoopbackBindHost: liveConsole.assertLiveConsoleLoopbackBindHost,
createCapabilityCleanRoomSessionInput: cleanRoom.createCapabilityCleanRoomSessionInput,
createCapabilityFixtureState: fixtureState.createCapabilityFixtureState,
encodeCapabilityTurnStreamFrame: turnStream.encodeCapabilityTurnStreamFrame,
projectCapabilityIssueThread: issueThread.projectCapabilityIssueThread,
toCapabilityPublicThreadView: issueThread.toCapabilityPublicThreadView,
};
}
function scratchRoot() {
@@ -174,7 +201,7 @@ class RouteError extends Error {
}
export function createCapabilityIssueThreadMiddleware(options = {}) {
const load = options.loadRunner ?? loadRunner;
const load = options.loadRunner ?? loadCapabilityIssueThreadRunner;
const workingDirectoryRoot = options.scratchRoot ?? scratchRoot();
let bootstrap = null;
let bindHost = options.bindHost ?? "127.0.0.1";
@@ -475,11 +475,29 @@ let scratchParent: string;
let scratchRoot: string;
const requestedUrls: string[] = [];
const sourceRunnerModuleLoaders: Record<string, () => Promise<unknown>> = {
"live/clean-room.js": async () => await import("./clean-room.js"),
"live/live-session.js": async () => await import("./live-session.js"),
"live/turn-stream.js": async () => await import("./turn-stream.js"),
"issue-thread/index.js": async () => await import("../issue-thread/index.js"),
"mock-core/capability-control-plane-types.js": async () =>
await import("../mock-core/capability-control-plane-types.js"),
"mock-core/live-console-demo-server.js": async () =>
await import("../mock-core/live-console-demo-server.js"),
};
async function loadSourceRunnerModule(relativePath: string): Promise<unknown> {
const load = sourceRunnerModuleLoaders[relativePath];
if (load === undefined) throw new Error(`Unexpected runner module: ${relativePath}`);
return await load();
}
async function createMiddleware(state: FakeProviderState, root: string) {
const module = await import("../../scripts/capability-issue-thread-server.mjs");
return module.createCapabilityIssueThreadMiddleware({
bindHost: "127.0.0.1",
loadRunner: async () => await import("../index.js"),
loadRunner: async () =>
await module.loadCapabilityIssueThreadRunner(loadSourceRunnerModule),
scratchRoot: root,
transportFactory: fakeTransportFactory(state),
});