From 9c7907ac3bc0f69270aea9a813103915f28f9841 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Sat, 17 Oct 2026 17:10:00 -0700 Subject: [PATCH 1/2] perf(types): import runtime values from runtime-core Value imports of runtime contracts were loading the runtime barrel, which constructs the InferenceEvent union. Import those values from runtime-core instead. --- src/agent/lazy-blob-reader.test.ts | 2 +- src/agent/posix-tool-plugins.test.ts | 2 +- src/permission/reactor-authorize.ts | 5 +- src/plugins/read-file-guard-plugin.test.ts | 2 +- src/plugins/result-truncation-plugin.test.ts | 2 +- src/plugins/tool-output-uri-plugin.test.ts | 2 +- src/session/optimized-context-store.ts | 2 +- src/session/pending-approval-record.ts | 2 +- src/session/runtime-core-import.test.ts | 64 ++++++++++++++++++++ src/session/summarizer.ts | 2 +- src/subagent/fleet-dry-drive.test.ts | 2 +- 11 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 src/session/runtime-core-import.test.ts diff --git a/src/agent/lazy-blob-reader.test.ts b/src/agent/lazy-blob-reader.test.ts index 8f8d55131..7b05a4a88 100644 --- a/src/agent/lazy-blob-reader.test.ts +++ b/src/agent/lazy-blob-reader.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { createBlobReader } from "@intx/types/runtime"; +import { createBlobReader } from "@intx/types/runtime-core"; import { createCompositeBlobReader, createLazyBlobReader, diff --git a/src/agent/posix-tool-plugins.test.ts b/src/agent/posix-tool-plugins.test.ts index 643351648..2f8631121 100644 --- a/src/agent/posix-tool-plugins.test.ts +++ b/src/agent/posix-tool-plugins.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { mkdtemp, writeFile, readFile, rm } from "node:fs/promises"; import { join } from "node:path"; import { tmpdir } from "node:os"; -import { createBlobReader } from "@intx/types/runtime"; +import { createBlobReader } from "@intx/types/runtime-core"; import { createPosixTools, composeMiddleware } from "@intx/tools-posix"; import type { ToolPlugin } from "@intx/tools-posix"; import type { ToolCall, ToolResult } from "@intx/types/runtime"; diff --git a/src/permission/reactor-authorize.ts b/src/permission/reactor-authorize.ts index f1e5666e6..3f44afdd8 100644 --- a/src/permission/reactor-authorize.ts +++ b/src/permission/reactor-authorize.ts @@ -14,7 +14,10 @@ import { getLogger } from "@intx/log"; import { LOG_NAMESPACE_ROOT } from "../branding.js"; -import { ToolCall, type ToolCall as ToolCallType } from "@intx/types/runtime"; +import { + ToolCall, + type ToolCall as ToolCallType, +} from "@intx/types/runtime-core"; import { type } from "arktype"; import type { AuthzCallResult } from "@intx/inference"; diff --git a/src/plugins/read-file-guard-plugin.test.ts b/src/plugins/read-file-guard-plugin.test.ts index 3f75f12fe..f964d7b4f 100644 --- a/src/plugins/read-file-guard-plugin.test.ts +++ b/src/plugins/read-file-guard-plugin.test.ts @@ -4,7 +4,7 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { createSizeCapTransform } from "@intx/inference"; -import { createBlobReader } from "@intx/types/runtime"; +import { createBlobReader } from "@intx/types/runtime-core"; import type { StrategyContext, ToolCall, diff --git a/src/plugins/result-truncation-plugin.test.ts b/src/plugins/result-truncation-plugin.test.ts index 4b98f858d..d44d412c4 100644 --- a/src/plugins/result-truncation-plugin.test.ts +++ b/src/plugins/result-truncation-plugin.test.ts @@ -5,7 +5,7 @@ import { createBlobReader, type StrategyContext, type ToolResult, -} from "@intx/types/runtime"; +} from "@intx/types/runtime-core"; import { MAX_RESULT_CHARS, resultTruncationPlugin, diff --git a/src/plugins/tool-output-uri-plugin.test.ts b/src/plugins/tool-output-uri-plugin.test.ts index 1c2adf91b..da4f453ae 100644 --- a/src/plugins/tool-output-uri-plugin.test.ts +++ b/src/plugins/tool-output-uri-plugin.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { createBlobReader } from "@intx/types/runtime"; +import { createBlobReader } from "@intx/types/runtime-core"; import { createPosixTools } from "@intx/tools-posix"; import { readFileGuardPlugin } from "./read-file-guard-plugin.js"; import { ripgrepPlugin } from "./ripgrep-plugin.js"; diff --git a/src/session/optimized-context-store.ts b/src/session/optimized-context-store.ts index 265dca56a..13af98b76 100644 --- a/src/session/optimized-context-store.ts +++ b/src/session/optimized-context-store.ts @@ -13,7 +13,7 @@ import { TokenUsage, type ConversationTurn, type PendingOperation, -} from "@intx/types/runtime"; +} from "@intx/types/runtime-core"; import { getLogger } from "@intx/log"; import { createSegmentedJSONLWriter, diff --git a/src/session/pending-approval-record.ts b/src/session/pending-approval-record.ts index 021b6ea8b..4a90632c0 100644 --- a/src/session/pending-approval-record.ts +++ b/src/session/pending-approval-record.ts @@ -3,7 +3,7 @@ import { ApprovalSnapshot, type PendingOperation, ToolCall, -} from "@intx/types/runtime"; +} from "@intx/types/runtime-core"; /** * A pending operation as it rests in session state (metadata.json, or a turn diff --git a/src/session/runtime-core-import.test.ts b/src/session/runtime-core-import.test.ts new file mode 100644 index 000000000..c6d195782 --- /dev/null +++ b/src/session/runtime-core-import.test.ts @@ -0,0 +1,64 @@ +// Loading the @intx/types/runtime barrel evaluates inference-events.ts and +// builds the InferenceEvent union. Session modules that need runtime values +// import @intx/types/runtime-core so that boot does not pay for the union. + +import { expect, test } from "bun:test"; +import { spawnSync } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const repoRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "../..", +); + +const probe = ` +import { mock } from "bun:test"; +mock.module("@intx/types/inference-events", () => { + throw new Error("evaluated-inference-events"); +}); +const specifier = process.env.PROBE_SPECIFIER; +if (specifier === undefined || specifier.length === 0) { + throw new Error("missing PROBE_SPECIFIER"); +} +for (const target of specifier.split(",")) { + await import(target); +} +`; + +function importUnderProbe(specifier: string): { + status: number | null; + stderr: string; +} { + const result = spawnSync("bun", ["-e", probe], { + cwd: repoRoot, + encoding: "utf8", + env: { ...process.env, PROBE_SPECIFIER: specifier }, + }); + return { + status: result.status, + stderr: result.stderr, + }; +} + +const sessionBootModules = [ + "./src/session/optimized-context-store.ts", + "./src/session/pending-approval-record.ts", + "./src/session/summarizer.ts", +].join(","); + +test("the runtime barrel evaluates the inference event union", () => { + const result = importUnderProbe("@intx/types/runtime"); + expect(result.status).not.toBe(0); + expect(result.stderr).toContain("evaluated-inference-events"); +}); + +test( + "session value imports do not evaluate the inference event union", + () => { + const result = importUnderProbe(sessionBootModules); + expect(result.stderr).not.toContain("evaluated-inference-events"); + expect(result.status).toBe(0); + }, + { timeout: 60_000 }, +); diff --git a/src/session/summarizer.ts b/src/session/summarizer.ts index af0d35df1..a9f1c7a29 100644 --- a/src/session/summarizer.ts +++ b/src/session/summarizer.ts @@ -14,7 +14,7 @@ import { type ConversationTurn, type InferenceSource, type RetryPolicy, -} from "@intx/types/runtime"; +} from "@intx/types/runtime-core"; import { LOG_NAMESPACE_ROOT } from "../branding.js"; import { NOOP_TELEMETRY, type Telemetry } from "../telemetry/index.js"; import { diff --git a/src/subagent/fleet-dry-drive.test.ts b/src/subagent/fleet-dry-drive.test.ts index 0619a58d2..27ec8725b 100644 --- a/src/subagent/fleet-dry-drive.test.ts +++ b/src/subagent/fleet-dry-drive.test.ts @@ -1,4 +1,4 @@ -import { createBlobReader } from "@intx/types/runtime"; +import { createBlobReader } from "@intx/types/runtime-core"; import { describe, expect, test } from "bun:test"; import type { Task } from "../agent/tasks.js"; import { createFleetMailbox } from "./agent-fleet.js"; From f5f7f02f4eced2a43c814845f145d9fc332b2799 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Sat, 17 Oct 2026 20:28:08 -0700 Subject: [PATCH 2/2] perf(types): drop test import moves that are not on the boot path --- src/agent/lazy-blob-reader.test.ts | 2 +- src/agent/posix-tool-plugins.test.ts | 2 +- src/plugins/read-file-guard-plugin.test.ts | 2 +- src/plugins/result-truncation-plugin.test.ts | 2 +- src/plugins/tool-output-uri-plugin.test.ts | 2 +- src/subagent/fleet-dry-drive.test.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/agent/lazy-blob-reader.test.ts b/src/agent/lazy-blob-reader.test.ts index 7b05a4a88..8f8d55131 100644 --- a/src/agent/lazy-blob-reader.test.ts +++ b/src/agent/lazy-blob-reader.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { createBlobReader } from "@intx/types/runtime-core"; +import { createBlobReader } from "@intx/types/runtime"; import { createCompositeBlobReader, createLazyBlobReader, diff --git a/src/agent/posix-tool-plugins.test.ts b/src/agent/posix-tool-plugins.test.ts index 2f8631121..643351648 100644 --- a/src/agent/posix-tool-plugins.test.ts +++ b/src/agent/posix-tool-plugins.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { mkdtemp, writeFile, readFile, rm } from "node:fs/promises"; import { join } from "node:path"; import { tmpdir } from "node:os"; -import { createBlobReader } from "@intx/types/runtime-core"; +import { createBlobReader } from "@intx/types/runtime"; import { createPosixTools, composeMiddleware } from "@intx/tools-posix"; import type { ToolPlugin } from "@intx/tools-posix"; import type { ToolCall, ToolResult } from "@intx/types/runtime"; diff --git a/src/plugins/read-file-guard-plugin.test.ts b/src/plugins/read-file-guard-plugin.test.ts index f964d7b4f..3f75f12fe 100644 --- a/src/plugins/read-file-guard-plugin.test.ts +++ b/src/plugins/read-file-guard-plugin.test.ts @@ -4,7 +4,7 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { createSizeCapTransform } from "@intx/inference"; -import { createBlobReader } from "@intx/types/runtime-core"; +import { createBlobReader } from "@intx/types/runtime"; import type { StrategyContext, ToolCall, diff --git a/src/plugins/result-truncation-plugin.test.ts b/src/plugins/result-truncation-plugin.test.ts index d44d412c4..4b98f858d 100644 --- a/src/plugins/result-truncation-plugin.test.ts +++ b/src/plugins/result-truncation-plugin.test.ts @@ -5,7 +5,7 @@ import { createBlobReader, type StrategyContext, type ToolResult, -} from "@intx/types/runtime-core"; +} from "@intx/types/runtime"; import { MAX_RESULT_CHARS, resultTruncationPlugin, diff --git a/src/plugins/tool-output-uri-plugin.test.ts b/src/plugins/tool-output-uri-plugin.test.ts index da4f453ae..1c2adf91b 100644 --- a/src/plugins/tool-output-uri-plugin.test.ts +++ b/src/plugins/tool-output-uri-plugin.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { createBlobReader } from "@intx/types/runtime-core"; +import { createBlobReader } from "@intx/types/runtime"; import { createPosixTools } from "@intx/tools-posix"; import { readFileGuardPlugin } from "./read-file-guard-plugin.js"; import { ripgrepPlugin } from "./ripgrep-plugin.js"; diff --git a/src/subagent/fleet-dry-drive.test.ts b/src/subagent/fleet-dry-drive.test.ts index 27ec8725b..0619a58d2 100644 --- a/src/subagent/fleet-dry-drive.test.ts +++ b/src/subagent/fleet-dry-drive.test.ts @@ -1,4 +1,4 @@ -import { createBlobReader } from "@intx/types/runtime-core"; +import { createBlobReader } from "@intx/types/runtime"; import { describe, expect, test } from "bun:test"; import type { Task } from "../agent/tasks.js"; import { createFleetMailbox } from "./agent-fleet.js";