@koda-sl/baker-bridge 0.108.0-dev.f7c15fa76 → 0.108.0-dev.f9fbea780

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,266 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { dirname, join } from "node:path";
5
- import { promisify } from "node:util";
6
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
7
- import { createMainSync, parsePublishedElsewhere } from "./main-sync.js";
8
- const execFileAsync = promisify(execFile);
9
- let root;
10
- let origin;
11
- let workspace;
12
- let publisher;
13
- /** What Baker recorded as published to main, newest first — what the backend sends with each turn. */
14
- let recorded;
15
- async function git(cwd, args) {
16
- const { stdout } = await execFileAsync("git", args, { cwd });
17
- return stdout.trim();
18
- }
19
- async function write(base, path, content) {
20
- await mkdir(dirname(join(base, path)), { recursive: true });
21
- await writeFile(join(base, path), content, "utf-8");
22
- }
23
- async function read(path) {
24
- return await readFile(join(workspace, path), "utf-8");
25
- }
26
- async function commitOnMain(message, files) {
27
- await git(publisher, ["pull", "-q", "origin", "main"]);
28
- for (const [path, content] of Object.entries(files)) {
29
- await write(publisher, path, content);
30
- }
31
- await git(publisher, ["add", "-A"]);
32
- await git(publisher, ["-c", "user.name=Test", "-c", "user.email=t@example.com", "commit", "-q", "-m", message]);
33
- await git(publisher, ["push", "-q", "origin", "main"]);
34
- return await git(publisher, ["rev-parse", "HEAD"]);
35
- }
36
- /** Another chat publishes, and Baker records it: the commit lands on origin's main, never fetched here. */
37
- async function publishFromAnotherChat(chatId, title, files) {
38
- const sha = await commitOnMain(`publish: chat/${chatId}`, files);
39
- recorded.unshift({ sha, chatId, title, publishedAt: Date.now(), paths: Object.keys(files) });
40
- }
41
- beforeEach(async () => {
42
- recorded = [];
43
- root = await mkdtemp(join(tmpdir(), "baker-main-sync-"));
44
- origin = join(root, "origin.git");
45
- workspace = join(root, "workspace");
46
- publisher = join(root, "publisher");
47
- await git(root, ["init", "-q", "--bare", "-b", "main", origin]);
48
- await git(root, ["clone", "-q", origin, publisher]);
49
- await git(publisher, ["checkout", "-q", "-b", "main"]);
50
- await write(publisher, "src/pages/hero/index.astro", "old hero\n");
51
- await write(publisher, "src/content/landings/hero.md", "old entry\n");
52
- await git(publisher, ["add", "-A"]);
53
- await git(publisher, ["-c", "user.name=Test", "-c", "user.email=t@example.com", "commit", "-q", "-m", "seed"]);
54
- await git(publisher, ["push", "-q", "origin", "main"]);
55
- // The Runtime's own clone (`e2bRuntimeAdapter.cloneRepo`): shallow, then the chat's branch.
56
- await git(root, ["clone", "-q", "--depth", "1", `file://${origin}`, workspace]);
57
- await git(workspace, ["checkout", "-q", "-B", "chat/this_chat"]);
58
- });
59
- afterEach(async () => {
60
- await rm(root, { recursive: true, force: true });
61
- });
62
- describe("main sync at turn start", () => {
63
- it("brings a chat that has changed nothing up to what another chat published, and says so", async () => {
64
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
65
- const notes = await createMainSync(workspace).beforeTurn("thread_1", recorded);
66
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("new hero\n");
67
- expect(await git(workspace, ["branch", "--show-current"])).toBe("chat/this_chat");
68
- expect(notes.resumed).toContain("brought up to date");
69
- expect(notes.resumed).toContain('"New hero"');
70
- expect(notes.resumed).toContain("src/pages/hero");
71
- });
72
- it("leaves a chat with changes of its own exactly as it is, and says what it does not show and how to read it", async () => {
73
- await write(workspace, "src/pages/pricing/index.astro", "new page in progress\n");
74
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
75
- const notes = await createMainSync(workspace).beforeTurn("thread_1", recorded);
76
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("old hero\n");
77
- await expect(read("src/pages/pricing/index.astro")).resolves.toBe("new page in progress\n");
78
- expect(notes.resumed).toContain("does not show yet");
79
- expect(notes.resumed).toContain('"New hero"');
80
- expect(notes.resumed).toContain("`src/pages/hero`");
81
- expect(notes.resumed).toContain("changes of its own");
82
- expect(await git(workspace, ["show", "origin/main:src/pages/hero/index.astro"])).toBe("new hero");
83
- });
84
- it("does not bring in a platform update Baker did not record as a publish, even into a chat that changed nothing", async () => {
85
- await commitOnMain("chore: sync protected files from scaffold-template", { "CLAUDE.md": "new rules\n" });
86
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
87
- const notes = await createMainSync(workspace).beforeTurn("thread_1", recorded);
88
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("old hero\n");
89
- expect(notes.resumed).toContain("does not show yet");
90
- expect(notes.resumed).toContain("platform update");
91
- });
92
- it("does not bring in published work that changes the installed packages", async () => {
93
- await publishFromAnotherChat("sibling_chat", "Deps", {
94
- "src/pages/hero/index.astro": "new hero\n",
95
- ".npmrc": "strict-peer-dependencies=false\n",
96
- });
97
- const notes = await createMainSync(workspace).beforeTurn("thread_1", recorded);
98
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("old hero\n");
99
- expect(notes.resumed).toContain("installed");
100
- });
101
- it("says nothing about a publish the workspace's own shallow clone already holds", async () => {
102
- await publishFromAnotherChat("earlier_chat", "Before this chat", { "src/pages/about/index.astro": "about\n" });
103
- await commitOnMain("a later commit, the clone's tip", { "src/pages/other/index.astro": "other\n" });
104
- await rm(workspace, { recursive: true, force: true });
105
- await git(root, ["clone", "-q", "--depth", "1", `file://${origin}`, workspace]);
106
- await git(workspace, ["checkout", "-q", "-B", "chat/this_chat"]);
107
- await expect(createMainSync(workspace).beforeTurn("thread_1", recorded)).resolves.toEqual({});
108
- });
109
- it("does not go back to the network for a publish it already found in its own clone", async () => {
110
- await publishFromAnotherChat("earlier_chat", "Before this chat", { "src/pages/about/index.astro": "about\n" });
111
- await commitOnMain("a later commit, the clone's tip", { "src/pages/other/index.astro": "other\n" });
112
- await rm(workspace, { recursive: true, force: true });
113
- await git(root, ["clone", "-q", "--depth", "1", `file://${origin}`, workspace]);
114
- await git(workspace, ["checkout", "-q", "-B", "chat/this_chat"]);
115
- await write(workspace, "src/pages/pricing/index.astro", "mine\n");
116
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
117
- const sync = createMainSync(workspace);
118
- await sync.beforeTurn("thread_1", recorded);
119
- await git(workspace, ["remote", "set-url", "origin", join(root, "missing.git")]);
120
- const offline = await sync.beforeTurn("thread_1", recorded);
121
- expect(offline.recovered).toContain('"New hero"');
122
- expect(offline.recovered).not.toContain("Before this chat");
123
- });
124
- it("says nothing and changes nothing when nothing was published elsewhere", async () => {
125
- await git(workspace, ["remote", "set-url", "origin", join(root, "missing.git")]);
126
- await expect(createMainSync(workspace).beforeTurn("thread_1", [])).resolves.toEqual({});
127
- });
128
- it("says nothing and changes nothing when main cannot be reached", async () => {
129
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
130
- await git(workspace, ["remote", "set-url", "origin", join(root, "missing.git")]);
131
- const head = await git(workspace, ["rev-parse", "HEAD"]);
132
- await expect(createMainSync(workspace).beforeTurn("thread_1", recorded)).resolves.toEqual({});
133
- expect(await git(workspace, ["rev-parse", "HEAD"])).toBe(head);
134
- });
135
- it("leaves alone any checkout that is not a chat's workspace", async () => {
136
- await git(workspace, ["checkout", "-q", "-b", "some-feature"]);
137
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
138
- await expect(createMainSync(workspace).beforeTurn("thread_1", recorded)).resolves.toEqual({});
139
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("old hero\n");
140
- });
141
- it("leaves the branch to a Publish that is under way", async () => {
142
- await write(workspace, ".cache/publish-state.json", "{}\n");
143
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
144
- await expect(createMainSync(workspace).beforeTurn("thread_1", recorded)).resolves.toEqual({});
145
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("old hero\n");
146
- });
147
- it("keeps the chat's changes list to its own work after bringing the workspace up to date", async () => {
148
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
149
- await createMainSync(workspace).beforeTurn("thread_1", recorded);
150
- await write(workspace, "src/pages/pricing/index.astro", "this chat's page\n");
151
- await git(workspace, ["add", "-A"]);
152
- expect(await git(workspace, ["diff", "--name-only", "--cached", "main"])).toBe("src/pages/pricing/index.astro");
153
- });
154
- it("puts the changes list back on the chat's own work after the agent brought main in itself", async () => {
155
- await write(workspace, "src/pages/pricing/index.astro", "this chat's page\n");
156
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
157
- await git(workspace, ["fetch", "-q", "origin", "main"]);
158
- await git(workspace, ["merge", "-q", "--ff-only", "origin/main"]);
159
- await createMainSync(workspace).beforeTurn("thread_1", recorded);
160
- await git(workspace, ["add", "-A"]);
161
- expect(await git(workspace, ["diff", "--name-only", "--cached", "main"])).toBe("src/pages/pricing/index.astro");
162
- });
163
- it("tells a thread about work it does not show once for each new publish, not on every message", async () => {
164
- await write(workspace, "src/pages/pricing/index.astro", "mine\n");
165
- await publishFromAnotherChat("first_chat", "First", { "src/pages/hero/index.astro": "first\n" });
166
- const sync = createMainSync(workspace);
167
- const first = (await sync.beforeTurn("thread_1", recorded)).resumed;
168
- const repeated = (await sync.beforeTurn("thread_1", recorded)).resumed;
169
- const otherThread = (await sync.beforeTurn("thread_2", recorded)).resumed;
170
- await publishFromAnotherChat("second_chat", "Second", { "src/pages/about/index.astro": "about\n" });
171
- const afterNewPublish = (await sync.beforeTurn("thread_1", recorded)).resumed;
172
- expect(first).toContain('"First"');
173
- expect(repeated).toBeUndefined();
174
- expect(otherThread).toContain('"First"');
175
- expect(afterNewPublish).toContain('"Second"');
176
- });
177
- it("keeps repeating what the workspace does not show to a conversation rebuilt from its messages", async () => {
178
- await write(workspace, "src/pages/pricing/index.astro", "mine\n");
179
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
180
- const sync = createMainSync(workspace);
181
- await sync.beforeTurn("thread_1", recorded);
182
- const next = await sync.beforeTurn("thread_1", recorded);
183
- expect(next.resumed).toBeUndefined();
184
- expect(next.recovered).toContain("does not show yet");
185
- });
186
- it("tells every thread that the workspace moved, not only the one whose turn moved it", async () => {
187
- const sync = createMainSync(workspace);
188
- await sync.beforeTurn("thread_1", recorded);
189
- await sync.beforeTurn("thread_2", recorded);
190
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
191
- const mover = (await sync.beforeTurn("thread_1", recorded)).resumed;
192
- const sibling = (await sync.beforeTurn("thread_2", recorded)).resumed;
193
- const siblingAgain = (await sync.beforeTurn("thread_2", recorded)).resumed;
194
- expect(mover).toContain("brought up to date");
195
- expect(sibling).toContain("brought up to date");
196
- expect(siblingAgain).toBeUndefined();
197
- });
198
- it("does not tell a thread that starts after the workspace moved about files it never read", async () => {
199
- const sync = createMainSync(workspace);
200
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
201
- await sync.beforeTurn("thread_1", recorded);
202
- await expect(sync.beforeTurn("thread_new", recorded)).resolves.toEqual({});
203
- });
204
- it("brings the workspace up to date under a leading command but holds the note for the thread's next turn", async () => {
205
- const sync = createMainSync(workspace);
206
- await sync.beforeTurn("thread_1", recorded);
207
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
208
- const underCommand = await sync.beforeTurn("thread_1", recorded, { withNote: false });
209
- await expect(read("src/pages/hero/index.astro")).resolves.toBe("new hero\n");
210
- const next = (await sync.beforeTurn("thread_1", recorded)).resumed;
211
- expect(underCommand).toEqual({});
212
- expect(next).toContain("brought up to date");
213
- });
214
- it("remembers what each thread was told across a bridge restart", async () => {
215
- await createMainSync(workspace).beforeTurn("thread_1", recorded);
216
- await publishFromAnotherChat("sibling_chat", "New hero", { "src/pages/hero/index.astro": "new hero\n" });
217
- await createMainSync(workspace).beforeTurn("thread_1", recorded, { withNote: false });
218
- const afterRestart = (await createMainSync(workspace).beforeTurn("thread_1", recorded)).resumed;
219
- const again = (await createMainSync(workspace).beforeTurn("thread_1", recorded)).resumed;
220
- expect(afterRestart).toContain("brought up to date");
221
- expect(again).toBeUndefined();
222
- });
223
- it("names a change made in the dashboard as the dashboard's", async () => {
224
- await write(workspace, "src/pages/pricing/index.astro", "mine\n");
225
- const sha = await commitOnMain("Update COMPANY.md", { "COMPANY.md": "new profile\n" });
226
- recorded.unshift({ sha, title: "Update COMPANY.md", publishedAt: Date.now(), paths: ["COMPANY.md"] });
227
- const notes = await createMainSync(workspace).beforeTurn("thread_1", recorded);
228
- expect(notes.resumed).toContain("a change made in the dashboard: `COMPANY.md`");
229
- });
230
- it("stops the agent once from creating a page another chat already published, and lets a deliberate retry through", async () => {
231
- await write(workspace, "src/pages/pricing/index.astro", "mine\n");
232
- await publishFromAnotherChat("sibling_chat", "Sales v2", {
233
- "src/pages/sales-v2/index.astro": "the sibling's v2\n",
234
- });
235
- const sync = createMainSync(workspace);
236
- await sync.beforeTurn("thread_1", recorded);
237
- const first = sync.refuseWrite("thread_1", join(workspace, "src/pages/sales-v2/index.astro"));
238
- const retry = sync.refuseWrite("thread_1", join(workspace, "src/pages/sales-v2/index.astro"));
239
- expect(first).toContain("`src/pages/sales-v2`");
240
- expect(first).toContain('"Sales v2"');
241
- expect(first).toContain("git ls-tree -r --name-only origin/main -- src/pages/sales-v2");
242
- expect(retry).toBeNull();
243
- });
244
- it("lets the agent write anywhere else, and to a page it already has", async () => {
245
- await write(workspace, "src/pages/sales-v2/index.astro", "mine\n");
246
- await publishFromAnotherChat("sibling_chat", "Sales v2", {
247
- "src/pages/sales-v2/index.astro": "the sibling's v2\n",
248
- });
249
- const sync = createMainSync(workspace);
250
- await sync.beforeTurn("thread_1", recorded);
251
- expect(sync.refuseWrite("thread_1", join(workspace, "src/pages/sales-v2/_components/Hero.astro"))).toBeNull();
252
- expect(sync.refuseWrite("thread_1", join(workspace, "src/pages/pricing/index.astro"))).toBeNull();
253
- });
254
- it("reads what the backend sent, dropping any entry it cannot use", () => {
255
- const valid = {
256
- sha: "a".repeat(40),
257
- chatId: "chat_1",
258
- title: "Hero",
259
- publishedAt: 1,
260
- paths: ["src/pages/hero/index.astro"],
261
- };
262
- expect(parsePublishedElsewhere([valid, { sha: "not a sha", title: "x", publishedAt: 1, paths: [] }, "junk"])).toEqual([valid]);
263
- expect(parsePublishedElsewhere(undefined)).toEqual([]);
264
- });
265
- });
266
- //# sourceMappingURL=main-sync.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-sync.test.js","sourceRoot":"","sources":["../../src/hono/main-sync.test.ts"],"names":[],"mappings":"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"}