Skip to content

Commit d1baa51

Browse files
authored
Merge pull request #98 from teng-lin/refactor/remove-backward-compat
refactor: remove 7 backward-compatibility shims
2 parents c914bae + 1449171 commit d1baa51

34 files changed

+23
-241
lines changed

src/adapters/claude/claude-launcher.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -427,11 +427,6 @@ export class ClaudeLauncher extends ProcessSupervisor<LauncherEventMap> implemen
427427
}
428428
}
429429

430-
/** @deprecated Use setBackendSessionId */
431-
setCLISessionId(sessionId: string, backendSessionId: string): void {
432-
this.setBackendSessionId(sessionId, backendSessionId);
433-
}
434-
435430
// ---------------------------------------------------------------------------
436431
// Kill / Cleanup
437432
// ---------------------------------------------------------------------------

src/adapters/claude/inbound-translator.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { describe, expect, it } from "vitest";
2+
import { normalizeInbound } from "../../core/inbound-normalizer.js";
23
import { createUnifiedMessage } from "../../core/types/unified-message.js";
34
import type { InboundMessage } from "../../types/inbound-messages.js";
4-
import { normalizeInbound, toNDJSON } from "./inbound-translator.js";
5+
import { toNDJSON } from "./inbound-translator.js";
56

67
// ---------------------------------------------------------------------------
78
// normalizeInbound

src/adapters/claude/inbound-translator.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
/**
22
* Claude Inbound Translator
33
*
4-
* Two responsibilities:
5-
* 1. normalizeInbound: Re-exported from core (generic InboundMessage → UnifiedMessage)
6-
* 2. toNDJSON: UnifiedMessage → NDJSON string (Claude-specific wire format)
4+
* Converts UnifiedMessage → NDJSON string (Claude-specific wire format).
75
*/
86

97
import type { UnifiedMessage } from "../../core/types/unified-message.js";
108

11-
// Re-export normalizeInbound from core for backward compatibility
12-
export { normalizeInbound } from "../../core/inbound-normalizer.js";
13-
149
// ---------------------------------------------------------------------------
1510
// UnifiedMessage → NDJSON string (for CLI)
1611
// ---------------------------------------------------------------------------

src/adapters/claude/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1+
export { normalizeInbound } from "../../core/inbound-normalizer.js";
2+
export { reduce } from "../../core/session-state-reducer.js";
13
export { ClaudeAdapter } from "./claude-adapter.js";
2-
export { normalizeInbound, toNDJSON } from "./inbound-translator.js";
4+
export { toNDJSON } from "./inbound-translator.js";
35
export { translate } from "./message-translator.js";
4-
export { reduce } from "./state-reducer.js";

src/adapters/claude/message-translator.test.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ function makeInitMsg(overrides?: Partial<CLISystemInitMessage>): CLISystemInitMe
3131
apiKeySource: "env",
3232
claude_code_version: "1.0.0",
3333
slash_commands: ["/help", "/clear"],
34-
agents: ["planner"],
3534
skills: ["tdd"],
3635
output_style: "streaming",
3736
uuid: "uuid-init-1",
@@ -120,22 +119,19 @@ describe("message-translator", () => {
120119
expect(result.metadata.apiKeySource).toBe("env");
121120
expect(result.metadata.claude_code_version).toBe("1.0.0");
122121
expect(result.metadata.mcp_servers).toEqual([{ name: "local", status: "connected" }]);
123-
expect(result.metadata.agents).toEqual(["planner"]);
124122
expect(result.metadata.slash_commands).toEqual(["/help", "/clear"]);
125123
expect(result.metadata.skills).toEqual(["tdd"]);
126124
expect(result.metadata.output_style).toBe("streaming");
127125
expect(result.metadata.session_id).toBe("sess-1");
128126
expect(result.metadata.uuid).toBe("uuid-init-1");
129127
});
130128

131-
it("defaults agents/slash_commands/skills to empty arrays when undefined", () => {
129+
it("defaults slash_commands/skills to empty arrays when undefined", () => {
132130
const msg = makeInitMsg({
133-
agents: undefined,
134131
slash_commands: undefined as unknown as string[],
135132
skills: undefined,
136133
});
137134
const result = translate(msg)!;
138-
expect(result.metadata.agents).toEqual([]);
139135
expect(result.metadata.slash_commands).toEqual([]);
140136
expect(result.metadata.skills).toEqual([]);
141137
});

src/adapters/claude/message-translator.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ function translateSystemInit(msg: CLISystemInitMessage): UnifiedMessage {
7171
apiKeySource: msg.apiKeySource,
7272
claude_code_version: msg.claude_code_version,
7373
mcp_servers: msg.mcp_servers,
74-
agents: msg.agents ?? [],
7574
slash_commands: msg.slash_commands ?? [],
7675
skills: msg.skills ?? [],
7776
output_style: msg.output_style,

src/adapters/claude/state-reducer.property.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import fc from "fast-check";
22
import { describe, expect, it } from "vitest";
3+
import { reduce } from "../../core/session-state-reducer.js";
34
import { createUnifiedMessage } from "../../core/types/unified-message.js";
45
import type { SessionState } from "../../types/session-state.js";
5-
import { reduce } from "./state-reducer.js";
66

77
function arbSessionState(): fc.Arbitrary<SessionState> {
88
return fc.record({
@@ -13,7 +13,6 @@ function arbSessionState(): fc.Arbitrary<SessionState> {
1313
permissionMode: fc.string(),
1414
claude_code_version: fc.string(),
1515
mcp_servers: fc.array(fc.record({ name: fc.string(), status: fc.string() })),
16-
agents: fc.array(fc.string()),
1716
slash_commands: fc.array(fc.string()),
1817
skills: fc.array(fc.string()),
1918
is_compacting: fc.boolean(),

src/adapters/claude/state-reducer.test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { describe, expect, it } from "vitest";
2+
import { reduce } from "../../core/session-state-reducer.js";
23
import { createUnifiedMessage } from "../../core/types/unified-message.js";
34
import { makeDefaultSessionState, makeToolUseMessage } from "../../testing/fixtures.js";
45
import type { SessionState } from "../../types/session-state.js";
5-
import { reduce } from "./state-reducer.js";
66

77
// ---------------------------------------------------------------------------
88
// Tests
@@ -22,7 +22,6 @@ describe("state-reducer", () => {
2222
permissionMode: "plan",
2323
claude_code_version: "1.0.0",
2424
mcp_servers: [{ name: "local", status: "connected" }],
25-
agents: ["planner"],
2625
slash_commands: ["/help"],
2726
skills: ["tdd"],
2827
},
@@ -37,7 +36,6 @@ describe("state-reducer", () => {
3736
expect(next.permissionMode).toBe("plan");
3837
expect(next.claude_code_version).toBe("1.0.0");
3938
expect(next.mcp_servers).toEqual([{ name: "local", status: "connected" }]);
40-
expect(next.agents).toEqual(["planner"]);
4139
expect(next.slash_commands).toEqual(["/help"]);
4240
expect(next.skills).toEqual(["tdd"]);
4341
});
@@ -279,7 +277,6 @@ describe("state-reducer", () => {
279277
);
280278
expect(next.team!.members).toHaveLength(1);
281279
expect(next.team!.members[0]!.name).toBe("worker-1");
282-
expect(next.agents).toEqual(["worker-1"]);
283280
});
284281

285282
it("applies TaskCreate with synthetic ID when no tool_result", () => {

src/adapters/claude/state-reducer.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/adapters/claude/team-state-integration.test.ts

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77

88
import { beforeEach, describe, expect, it } from "vitest";
9+
import { reduce } from "../../core/session-state-reducer.js";
910
import { TeamToolCorrelationBuffer } from "../../core/team-tool-correlation.js";
1011
import { createUnifiedMessage } from "../../core/types/unified-message.js";
1112
import {
@@ -14,7 +15,6 @@ import {
1415
makeToolUseMessage,
1516
} from "../../testing/fixtures.js";
1617
import type { SessionState } from "../../types/session-state.js";
17-
import { reduce } from "./state-reducer.js";
1818

1919
// ---------------------------------------------------------------------------
2020
// Tests
@@ -85,26 +85,8 @@ describe("state-reducer team integration", () => {
8585
});
8686
});
8787

88-
describe("backward compatibility", () => {
89-
it("populates agents[] from team.members", () => {
90-
const state: SessionState = {
91-
...makeDefaultSessionState(),
92-
team: { name: "my-team", role: "lead", members: [], tasks: [] },
93-
};
94-
95-
const s1 = reduce(
96-
state,
97-
makeToolUseMessage("Task", "tu-2", { team_name: "my-team", name: "worker-1" }),
98-
buffer,
99-
);
100-
const s2 = reduce(s1, makeToolResultMessage("tu-2", "{}"), buffer);
101-
102-
expect(s2.agents).toEqual(["worker-1"]);
103-
});
104-
});
105-
10688
describe("TeamDelete", () => {
107-
it("removes team and resets agents to []", () => {
89+
it("removes team state", () => {
10890
const state: SessionState = {
10991
...makeDefaultSessionState(),
11092
team: {
@@ -115,14 +97,12 @@ describe("state-reducer team integration", () => {
11597
],
11698
tasks: [],
11799
},
118-
agents: ["worker-1"],
119100
};
120101

121102
const s1 = reduce(state, makeToolUseMessage("TeamDelete", "tu-del", {}), buffer);
122103
const s2 = reduce(s1, makeToolResultMessage("tu-del", '{"success": true}'), buffer);
123104

124105
expect(s2.team).toBeUndefined();
125-
expect(s2.agents).toEqual([]);
126106
});
127107
});
128108

@@ -183,7 +163,7 @@ describe("state-reducer team integration", () => {
183163
buffer,
184164
);
185165
expect(state.team?.members).toHaveLength(1);
186-
expect(state.agents).toEqual(["dev-1"]);
166+
expect(state.team!.members[0]!.name).toBe("dev-1");
187167

188168
// Create task — optimistic with synthetic ID
189169
state = reduce(
@@ -206,7 +186,7 @@ describe("state-reducer team integration", () => {
206186
// Delete team — optimistic
207187
state = reduce(state, makeToolUseMessage("TeamDelete", "tu-5", {}), buffer);
208188
expect(state.team).toBeUndefined();
209-
expect(state.agents).toEqual([]);
189+
expect(state.team).toBeUndefined();
210190
});
211191

212192
it("dual-path: tool_use + tool_result — synthetic replaced by real ID", () => {
@@ -268,7 +248,8 @@ describe("state-reducer team integration", () => {
268248
);
269249
expect(state.team!.members).toHaveLength(1);
270250
expect(state.team!.members[0]!.name).toBe("researcher");
271-
expect(state.agents).toEqual(["researcher"]);
251+
expect(state.team!.members).toHaveLength(1);
252+
expect(state.team!.members[0]!.name).toBe("researcher");
272253

273254
// Second member
274255
state = reduce(
@@ -277,7 +258,8 @@ describe("state-reducer team integration", () => {
277258
buffer,
278259
);
279260
expect(state.team!.members).toHaveLength(2);
280-
expect(state.agents).toEqual(["researcher", "implementer"]);
261+
expect(state.team!.members).toHaveLength(2);
262+
expect(state.team!.members.map((m) => m.name)).toEqual(["researcher", "implementer"]);
281263

282264
// TaskCreate — uses synthetic ID since no tool_result
283265
state = reduce(

0 commit comments

Comments
 (0)