From 25bb5dffcb190435c1a1dc86704ac81dd8725343 Mon Sep 17 00:00:00 2001 From: "user.email" Date: Fri, 9 Oct 2026 00:48:44 -0700 Subject: [PATCH] feat(agent): barrel the director fleet through a single entrypoint Re-export the six-name surface per @corbits/code-agent- workspace package plus a FLEET registry keyed by id over each package's director. The 10 extract PRs have merged, so the TEMP stub files are gone and the barrel imports the real packages via the tsconfig paths aliases. Reconcile the dead-export allowlist by dropping the now-consumed agent/defineAgent entries. --- scripts/dead-export-allowlist.txt | 10 -- src/agent/fleet.test.ts | 39 +++++++ src/agent/fleet.ts | 170 ++++++++++++++++++++++++++++++ 3 files changed, 209 insertions(+), 10 deletions(-) create mode 100644 src/agent/fleet.test.ts create mode 100644 src/agent/fleet.ts diff --git a/scripts/dead-export-allowlist.txt b/scripts/dead-export-allowlist.txt index 8421c5327..2367c0410 100644 --- a/scripts/dead-export-allowlist.txt +++ b/scripts/dead-export-allowlist.txt @@ -43,12 +43,8 @@ packages/opencode-go/src/models.ts: readonly # consumed by the app registry/barrel once the fleet merges; on a per-extract # branch they have no in-repo consumer yet. Public API by design — owned by the # agent-template lane; remove with the code if the package is deleted. -agents/dispatch/src/index.ts: agent -agents/dispatch/src/index.ts: defineAgent agents/dispatch/src/config.ts: satisfies agents/dispatch/src/config.ts: boolean -agents/warden/src/index.ts: agent -agents/warden/src/index.ts: defineAgent agents/warden/src/config.ts: satisfies agents/warden/src/config.ts: boolean agents/designer/src/index.ts: agent @@ -111,15 +107,9 @@ packages/prompt-variance/src/index.ts: PromptVarianceRow # consumed by the app registry/barrel once the fleet merges; on a per-extract # branch they have no in-repo consumer yet. Public API by design — owned by the # agent-template lane; remove with the code if the package is deleted. -agents/artist/src/index.ts: agent -agents/artist/src/index.ts: defineAgent agents/artist/src/config.ts: satisfies agents/artist/src/config.ts: boolean -agents/shakespeare/src/index.ts: agent -agents/shakespeare/src/index.ts: defineAgent agents/shakespeare/src/config.ts: satisfies agents/shakespeare/src/config.ts: boolean -agents/prober/src/index.ts: agent -agents/prober/src/index.ts: defineAgent agents/prober/src/config.ts: satisfies agents/prober/src/config.ts: boolean diff --git a/src/agent/fleet.test.ts b/src/agent/fleet.test.ts new file mode 100644 index 000000000..0b2068cda --- /dev/null +++ b/src/agent/fleet.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, test } from "bun:test"; + +import { FLEET } from "./fleet.js"; +import { DIRECTOR_IDS, type DirectorId } from "./directors/types.js"; + +describe("fleet barrel", () => { + test("FLEET covers all 10 extract ids in the closed director set", () => { + const closed = new Set(DIRECTOR_IDS); + expect(Object.keys(FLEET).length).toBe(10); + for (const id of Object.keys(FLEET) as readonly DirectorId[]) { + expect(closed).toContain(id); + } + }); + + test("every FLEET entry structurally satisfies the director contract", () => { + for (const id of Object.keys(FLEET) as readonly (keyof typeof FLEET)[]) { + const entry = FLEET[id]; + expect(entry.id).toBe(id); + } + }); + + test("barrel owns no in-tree director package data", () => { + // Backed only by the workspace packages (never in-tree ./directors/* re-exports + // — the merge-order stale re-export hazard), via the tsconfig paths aliases to + // agents//src/index.ts on this standalone branch. + expect(Object.keys(FLEET)).toEqual([ + "artist", + "coder", + "designer", + "dispatch", + "explorer", + "planner", + "prober", + "reviewer", + "shakespeare", + "warden", + ]); + }); +}); diff --git a/src/agent/fleet.ts b/src/agent/fleet.ts new file mode 100644 index 000000000..7d6740607 --- /dev/null +++ b/src/agent/fleet.ts @@ -0,0 +1,170 @@ +/** + * Fleet barrel (CL-9808, PR #1352): one import site for the closed director fleet. + * + * Re-exports the six-name surface per @corbits/code-agent- workspace package, + * plus a FLEET registry keyed by id over each package's director. Re-export only — + * never in-tree ./directors/* (the merge-order stale re-export hazard). + * + * All 10 @corbits/code-agent- packages have merged; `tsconfig` `paths` + * aliases resolve each name to the real agents//src/index.ts package entry. + */ + +// Workspace packages — six-name surface each. +import { + agent as artistAgent, + config as artistConfig, + defineAgent as defineArtistAgent, + director as artistDirector, + systemPrompt as artistSystemPrompt, + tools as artistTools, +} from "@corbits/code-agent-artist"; +import { + agent as coderAgent, + config as coderConfig, + defineAgent as defineCoderAgent, + director as coderDirector, + systemPrompt as coderSystemPrompt, + tools as coderTools, +} from "@corbits/code-agent-coder"; +import { + agent as designerAgent, + config as designerConfig, + defineAgent as defineDesignerAgent, + director as designerDirector, + systemPrompt as designerSystemPrompt, + tools as designerTools, +} from "@corbits/code-agent-designer"; +import { + agent as dispatchAgent, + config as dispatchConfig, + defineAgent as defineDispatchAgent, + director as dispatchDirector, + systemPrompt as dispatchSystemPrompt, + tools as dispatchTools, +} from "@corbits/code-agent-dispatch"; +import { + agent as explorerAgent, + config as explorerConfig, + defineAgent as defineExplorerAgent, + director as explorerDirector, + systemPrompt as explorerSystemPrompt, + tools as explorerTools, +} from "@corbits/code-agent-explorer"; +import { + agent as plannerAgent, + config as plannerConfig, + defineAgent as definePlannerAgent, + director as plannerDirector, + systemPrompt as plannerSystemPrompt, + tools as plannerTools, +} from "@corbits/code-agent-planner"; +import { + agent as proberAgent, + config as proberConfig, + defineAgent as defineProberAgent, + director as proberDirector, + systemPrompt as proberSystemPrompt, + tools as proberTools, +} from "@corbits/code-agent-prober"; +import { + agent as reviewerAgent, + config as reviewerConfig, + defineAgent as defineReviewerAgent, + director as reviewerDirector, + systemPrompt as reviewerSystemPrompt, + tools as reviewerTools, +} from "@corbits/code-agent-reviewer"; +import { + agent as shakespeareAgent, + config as shakespeareConfig, + defineAgent as defineShakespeareAgent, + director as shakespeareDirector, + systemPrompt as shakespeareSystemPrompt, + tools as shakespeareTools, +} from "@corbits/code-agent-shakespeare"; +import { + agent as wardenAgent, + config as wardenConfig, + defineAgent as defineWardenAgent, + director as wardenDirector, + systemPrompt as wardenSystemPrompt, + tools as wardenTools, +} from "@corbits/code-agent-warden"; + +// Fleet registry — keyed by id, one director per workspace package. +export const FLEET = { + artist: artistDirector, + coder: coderDirector, + designer: designerDirector, + dispatch: dispatchDirector, + explorer: explorerDirector, + planner: plannerDirector, + prober: proberDirector, + reviewer: reviewerDirector, + shakespeare: shakespeareDirector, + warden: wardenDirector, +} as const; + +// Re-exports — six-name surface per package. +export { + artistAgent, + artistConfig, + artistDirector, + artistSystemPrompt, + artistTools, + coderAgent, + coderConfig, + coderDirector, + coderSystemPrompt, + coderTools, + defineArtistAgent, + defineCoderAgent, + defineDesignerAgent, + defineDispatchAgent, + defineExplorerAgent, + definePlannerAgent, + defineProberAgent, + defineReviewerAgent, + defineShakespeareAgent, + defineWardenAgent, + designerAgent, + designerConfig, + designerDirector, + designerSystemPrompt, + designerTools, + dispatchAgent, + dispatchConfig, + dispatchDirector, + dispatchSystemPrompt, + dispatchTools, + explorerAgent, + explorerConfig, + explorerDirector, + explorerSystemPrompt, + explorerTools, + plannerAgent, + plannerConfig, + plannerDirector, + plannerSystemPrompt, + plannerTools, + proberAgent, + proberConfig, + proberDirector, + proberSystemPrompt, + proberTools, + reviewerAgent, + reviewerConfig, + reviewerDirector, + reviewerSystemPrompt, + reviewerTools, + shakespeareAgent, + shakespeareConfig, + shakespeareDirector, + shakespeareSystemPrompt, + shakespeareTools, + wardenAgent, + wardenConfig, + wardenDirector, + wardenSystemPrompt, + wardenTools, +};