Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions scripts/dead-export-allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
39 changes: 39 additions & 0 deletions src/agent/fleet.test.ts
Original file line number Diff line number Diff line change
@@ -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<string>(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/<id>/src/index.ts on this standalone branch.
expect(Object.keys(FLEET)).toEqual([
"artist",
"coder",
"designer",
"dispatch",
"explorer",
"planner",
"prober",
"reviewer",
"shakespeare",
"warden",
]);
});
});
170 changes: 170 additions & 0 deletions src/agent/fleet.ts
Original file line number Diff line number Diff line change
@@ -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-<id> 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-<id> packages have merged; `tsconfig` `paths`
* aliases resolve each name to the real agents/<id>/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,
};
Loading