@koda-sl/baker-bridge 0.149.0-dev.3d350da58 → 0.152.0-dev.1a19b1876

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,8 +1,6 @@
1
1
  type Run = (command: string, args: readonly string[], timeoutMs: number) => Promise<string>;
2
2
  export declare function cliKeeper(options?: {
3
3
  run?: Run;
4
- now?: () => number;
5
- waitMs?: number;
6
4
  }): (wanted: string) => Promise<void>;
7
5
  export {};
8
6
  //# sourceMappingURL=cli-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-sync.d.ts","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"AA4BA,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAO5F,wBAAgB,SAAS,CACvB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAiEnC"}
1
+ {"version":3,"file":"cli-sync.d.ts","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"AA4BA,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAO5F,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,GAAG,CAAA;CAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAmFxF"}
@@ -1,5 +1,6 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
+ import { valid } from "semver";
3
4
  /**
4
5
  * Keeps the Runtime's `baker` CLI on the release Convex names for each turn.
5
6
  *
@@ -9,14 +10,13 @@ import { promisify } from "node:util";
9
10
  * lived through a release read docs for commands its CLI did not have. So,
10
11
  * before a turn, a CLI on another release is replaced with the one named.
11
12
  *
12
- * Best effort and bounded: the turn waits at most `waitMs` and then runs on
13
+ * Best effort and bounded: the turn waits at most a minute and then runs on
13
14
  * whatever CLI is installed; an install still going finishes on its own, and a
14
15
  * failed one is not retried for a while, so a broken registry costs a turn
15
16
  * nothing past the first wait.
16
17
  */
17
18
  const execFileAsync = promisify(execFile);
18
19
  const CLI_PACKAGE = "@koda-sl/baker-cli";
19
- const VERSION = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
20
20
  const WAIT_MS = 60_000;
21
21
  const READ_TIMEOUT_MS = 15_000;
22
22
  // Long enough for any real install; killing npm mid-install could leave no CLI at all.
@@ -29,23 +29,24 @@ async function runCommand(command, args, timeoutMs) {
29
29
  }
30
30
  export function cliKeeper(options = {}) {
31
31
  const run = options.run ?? runCommand;
32
- const now = options.now ?? Date.now;
33
- const waitMs = options.waitMs ?? WAIT_MS;
34
32
  let installed;
33
+ // The release the registry last named, when it was last asked, and whether that ask failed.
35
34
  let latest;
36
35
  const failedAt = new Map();
37
36
  let inFlight;
38
- const read = async (command, args) => {
39
- const version = (await run(command, args, READ_TIMEOUT_MS)).trim();
40
- return VERSION.test(version) ? version : undefined;
41
- };
37
+ const read = async (command, args) => valid((await run(command, args, READ_TIMEOUT_MS)).trim()) ?? undefined;
42
38
  const resolve = async (wanted) => {
43
39
  if (wanted !== "latest") {
44
- return VERSION.test(wanted) ? wanted : undefined;
40
+ return valid(wanted) ?? undefined;
45
41
  }
46
- if (latest === undefined || now() - latest.at >= LATEST_TTL_MS) {
47
- const version = await read("npm", ["view", `${CLI_PACKAGE}@latest`, "version", "--prefer-online"]);
48
- latest = version === undefined ? undefined : { version, at: now() };
42
+ const askedAt = latest?.askedAt;
43
+ const ttl = latest === undefined || latest.failed ? RETRY_AFTER_MS : LATEST_TTL_MS;
44
+ if (askedAt === undefined || Date.now() - askedAt >= ttl) {
45
+ const version = await read("npm", ["view", `${CLI_PACKAGE}@latest`, "version", "--prefer-online"]).catch((error) => {
46
+ console.error("[cli-sync] could not ask the registry for the latest CLI", error);
47
+ return undefined;
48
+ });
49
+ latest = { version: version ?? latest?.version, askedAt: Date.now(), failed: version === undefined };
49
50
  }
50
51
  return latest?.version;
51
52
  };
@@ -56,7 +57,7 @@ export function cliKeeper(options = {}) {
56
57
  }
57
58
  installed ??= await read("baker", ["--version"]);
58
59
  const failed = failedAt.get(target);
59
- if (installed === target || (failed !== undefined && now() - failed < RETRY_AFTER_MS)) {
60
+ if (installed === target || (failed !== undefined && Date.now() - failed < RETRY_AFTER_MS)) {
60
61
  return;
61
62
  }
62
63
  try {
@@ -64,30 +65,44 @@ export function cliKeeper(options = {}) {
64
65
  }
65
66
  finally {
66
67
  installed = await read("baker", ["--version"]).catch(() => undefined);
67
- }
68
- if (installed !== target) {
69
- failedAt.set(target, now());
68
+ if (installed !== target) {
69
+ failedAt.set(target, Date.now());
70
+ }
70
71
  }
71
72
  };
73
+ const start = (wanted) => {
74
+ const started = {
75
+ wanted,
76
+ done: sync(wanted)
77
+ .catch((error) => {
78
+ console.error(`[cli-sync] could not bring the CLI to ${wanted}`, error);
79
+ })
80
+ .finally(() => {
81
+ inFlight = undefined;
82
+ }),
83
+ };
84
+ inFlight = started;
85
+ return started;
86
+ };
72
87
  return async (wanted) => {
73
- inFlight ??= sync(wanted)
74
- .catch((error) => {
75
- const target = VERSION.test(wanted) ? wanted : latest?.version;
76
- if (target !== undefined) {
77
- failedAt.set(target, now());
78
- }
79
- console.error(`[cli-sync] could not bring the CLI to ${wanted}`, error);
80
- })
81
- .finally(() => {
82
- inFlight = undefined;
83
- });
84
88
  let timer;
85
89
  const bound = new Promise((done) => {
86
- timer = setTimeout(done, waitMs);
90
+ timer = setTimeout(() => done(false), WAIT_MS);
87
91
  timer.unref?.();
88
92
  });
89
- await Promise.race([inFlight, bound]);
90
- clearTimeout(timer);
93
+ try {
94
+ // An install already running for another release is waited out, then this one's is made.
95
+ for (;;) {
96
+ const running = inFlight ?? start(wanted);
97
+ const settled = await Promise.race([running.done.then(() => true), bound]);
98
+ if (!settled || running.wanted === wanted) {
99
+ return;
100
+ }
101
+ }
102
+ }
103
+ finally {
104
+ clearTimeout(timer);
105
+ }
91
106
  };
92
107
  }
93
108
  //# sourceMappingURL=cli-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-sync.js","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-sync.js","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { afterEach, describe, expect, it, vi } from "vitest";
2
2
  import { cliKeeper } from "./cli-sync.js";
3
3
  function sandbox(installed, latest = "0.500.0") {
4
- return { installed, latest, installs: [] };
4
+ return { installed, latest, installs: [], views: 0 };
5
5
  }
6
6
  // The process boundary: `baker --version`, `npm view` and `npm install -g` as a Runtime answers them.
7
7
  function runIn(box) {
@@ -10,7 +10,8 @@ function runIn(box) {
10
10
  return Promise.resolve(`${box.installed}\n`);
11
11
  }
12
12
  if (args[0] === "view") {
13
- return Promise.resolve(`${box.latest}\n`);
13
+ box.views += 1;
14
+ return box.registryDown ? Promise.reject(new Error("npm ERR! ETIMEDOUT")) : Promise.resolve(`${box.latest}\n`);
14
15
  }
15
16
  const spec = args.at(-1) ?? "";
16
17
  box.installs.push(spec);
@@ -49,6 +50,46 @@ describe("cliKeeper", () => {
49
50
  expect(box.installed).toBe("0.400.0");
50
51
  expect(box.installs).toHaveLength(1);
51
52
  });
53
+ it("asks an unreachable registry again only after a while, keeping the release it last named", async () => {
54
+ vi.useFakeTimers();
55
+ const box = sandbox("0.400.0", "0.501.0");
56
+ const keep = cliKeeper({ run: runIn(box) });
57
+ await keep("latest");
58
+ await keep("0.400.0");
59
+ box.registryDown = true;
60
+ await vi.advanceTimersByTimeAsync(5 * 60_000);
61
+ await keep("latest");
62
+ await keep("latest");
63
+ await vi.advanceTimersByTimeAsync(5 * 60_000);
64
+ await keep("latest");
65
+ const viewsWithinTenMinutes = box.views;
66
+ await vi.advanceTimersByTimeAsync(5 * 60_000);
67
+ await keep("latest");
68
+ expect(viewsWithinTenMinutes).toBe(2);
69
+ expect(box.views).toBe(3);
70
+ expect(box.installed).toBe("0.501.0");
71
+ });
72
+ it("brings a turn that names another release to it once the install already running ends", async () => {
73
+ const box = sandbox("0.400.0");
74
+ const plain = runIn(box);
75
+ let finishFirst = () => undefined;
76
+ const firstInstall = new Promise((resolve) => {
77
+ finishFirst = resolve;
78
+ });
79
+ const run = async (command, args) => {
80
+ if (args.at(-1) === "@koda-sl/baker-cli@0.412.0") {
81
+ await firstInstall;
82
+ }
83
+ return await plain(command, args);
84
+ };
85
+ const keep = cliKeeper({ run });
86
+ const first = keep("0.412.0");
87
+ await new Promise((resolve) => setTimeout(resolve, 0));
88
+ const second = keep("0.413.0");
89
+ finishFirst();
90
+ await Promise.all([first, second]);
91
+ expect(box.installed).toBe("0.413.0");
92
+ });
52
93
  it("refuses a release that is not a version", async () => {
53
94
  const box = sandbox("0.400.0");
54
95
  await cliKeeper({ run: runIn(box) })("0.412.0 && curl evil");
@@ -67,10 +108,10 @@ describe("cliKeeper", () => {
67
108
  return "";
68
109
  };
69
110
  let released = false;
70
- const turn = cliKeeper({ run, waitMs: 1_000 })("0.412.0").then(() => {
111
+ const turn = cliKeeper({ run })("0.412.0").then(() => {
71
112
  released = true;
72
113
  });
73
- await vi.advanceTimersByTimeAsync(999);
114
+ await vi.advanceTimersByTimeAsync(59_999);
74
115
  expect(released).toBe(false);
75
116
  await vi.advanceTimersByTimeAsync(1);
76
117
  await turn;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-sync.test.js","sourceRoot":"","sources":["../../src/hono/cli-sync.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-sync.test.js","sourceRoot":"","sources":["../../src/hono/cli-sync.test.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,18 @@ export type MainSync = {
3
3
  inWorkspace: boolean;
4
4
  /** The files main changed since this thread was last told about main. */
5
5
  changed: readonly string[];
6
+ /** Records the thread as told, once its turn has actually carried the note; until then the news is kept. */
7
+ told: () => Promise<void>;
6
8
  };
7
9
  /**
8
10
  * What main changed since `threadId` was last told, after bringing the
9
- * workspace up to date when it can be. `notify: false` (a turn that cannot
10
- * carry the note) still brings the workspace up to date, and keeps the news
11
- * for the thread's next turn.
11
+ * workspace up to date when it can be. The thread counts as told only once
12
+ * `told` is called, so a turn that never carries the note keeps it for the next.
12
13
  */
13
- export declare function catchUpWithMain(projectRoot: string, threadId: string, notify?: boolean): Promise<MainSync | undefined>;
14
+ export declare function catchUpWithMain(projectRoot: string, threadId: string): Promise<MainSync | undefined>;
14
15
  /**
15
16
  * What other chats published, beside the turn's message: the agent may still
16
17
  * hold the superseded version of these files from an earlier turn.
17
18
  */
18
- export declare function mainSyncReminder(sync: MainSync | undefined): string | undefined;
19
+ export declare function mainSyncReminder(sync: Omit<MainSync, "told"> | undefined): string | undefined;
19
20
  //# sourceMappingURL=main-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main-sync.d.ts","sourceRoot":"","sources":["../../src/hono/main-sync.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,QAAQ,GAAG;IACrB,+FAA+F;IAC/F,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAyDF;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,UAAO,GACZ,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAkC/B;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA2B/E"}
1
+ {"version":3,"file":"main-sync.d.ts","sourceRoot":"","sources":["../../src/hono/main-sync.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,QAAQ,GAAG;IACrB,+FAA+F;IAC/F,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,4GAA4G;IAC5G,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAyDF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAwC1G;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA2B7F"}
@@ -22,7 +22,7 @@ const REMOTE_MAIN = "origin/main";
22
22
  const LOCAL_MAIN = "refs/heads/main";
23
23
  // The main each thread was last told about, kept out of `refs/heads` so no
24
24
  // branch list or push ever sees it. `base` is the main the workspace started
25
- // from, the fallback for a thread that has not been told anything yet.
25
+ // from: what a thread with no turn here yet finds while the branch holds work.
26
26
  const SEEN_REFS = "refs/baker/main-sync";
27
27
  async function git(projectRoot, args, timeout) {
28
28
  const { stdout } = await execFileAsync("git", args, { cwd: projectRoot, maxBuffer: 10 * 1024 * 1024, timeout });
@@ -71,11 +71,10 @@ async function fastForward(projectRoot) {
71
71
  }
72
72
  /**
73
73
  * What main changed since `threadId` was last told, after bringing the
74
- * workspace up to date when it can be. `notify: false` (a turn that cannot
75
- * carry the note) still brings the workspace up to date, and keeps the news
76
- * for the thread's next turn.
74
+ * workspace up to date when it can be. The thread counts as told only once
75
+ * `told` is called, so a turn that never carries the note keeps it for the next.
77
76
  */
78
- export async function catchUpWithMain(projectRoot, threadId, notify = true) {
77
+ export async function catchUpWithMain(projectRoot, threadId) {
79
78
  try {
80
79
  await git(projectRoot, ["fetch", "--quiet", "origin", "main"], FETCH_TIMEOUT_MS);
81
80
  const baseRef = `${SEEN_REFS}/base`;
@@ -86,25 +85,29 @@ export async function catchUpWithMain(projectRoot, threadId, notify = true) {
86
85
  if (await succeeds(projectRoot, ["merge-base", "--is-ancestor", "HEAD", REMOTE_MAIN])) {
87
86
  await fastForward(projectRoot);
88
87
  }
89
- const threadRef = `${SEEN_REFS}/threads/${threadId.replace(/[^A-Za-z0-9_-]/g, "_")}`;
90
- const seen = (await revision(projectRoot, threadRef)) ?? (await revision(projectRoot, baseRef));
91
88
  const main = await revision(projectRoot, REMOTE_MAIN);
92
- if (seen === undefined || main === undefined || seen === main) {
89
+ if (main === undefined) {
93
90
  return undefined;
94
91
  }
95
- const changed = (await git(projectRoot, ["diff", "--name-only", "-z", seen, main]))
96
- .split("\0")
97
- .filter((path) => path !== "");
98
- if (notify) {
99
- await git(projectRoot, ["update-ref", threadRef, main]);
100
- }
92
+ const threadRef = `${SEEN_REFS}/threads/${threadId.replace(/[^A-Za-z0-9_-]/g, "_")}`;
93
+ const told = async () => {
94
+ await git(projectRoot, ["update-ref", threadRef, main]).catch((error) => {
95
+ console.error("[main-sync] could not record what the thread was told", error);
96
+ });
97
+ };
98
+ const inWorkspace = await succeeds(projectRoot, ["merge-base", "--is-ancestor", REMOTE_MAIN, "HEAD"]);
99
+ // A thread with no ref has run no turn here: every turn records one. When
100
+ // the workspace already holds main it has read nothing stale; otherwise
101
+ // the workspace still holds what it was cloned with.
102
+ const seen = (await revision(projectRoot, threadRef)) ?? (inWorkspace ? main : await revision(projectRoot, baseRef));
103
+ const changed = seen === undefined || seen === main
104
+ ? []
105
+ : (await git(projectRoot, ["diff", "--name-only", "-z", seen, main])).split("\0").filter((path) => path !== "");
101
106
  if (changed.length === 0) {
107
+ await told();
102
108
  return undefined;
103
109
  }
104
- return {
105
- inWorkspace: await succeeds(projectRoot, ["merge-base", "--is-ancestor", REMOTE_MAIN, "HEAD"]),
106
- changed,
107
- };
110
+ return { inWorkspace, changed, told };
108
111
  }
109
112
  catch (error) {
110
113
  console.error("[main-sync] could not bring the workspace up to date with main", error);
@@ -1 +1 @@
1
- {"version":3,"file":"main-sync.js","sourceRoot":"","sources":["../../src/hono/main-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main-sync.js","sourceRoot":"","sources":["../../src/hono/main-sync.ts"],"names":[],"mappings":"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"}
@@ -47,9 +47,10 @@ afterEach(async () => {
47
47
  });
48
48
  describe("catchUpWithMain", () => {
49
49
  it("fast-forwards a chat branch with no work of its own to what another chat published", async () => {
50
+ expect(await catchUpWithMain(workspace, "thread_a")).toBeUndefined();
50
51
  await publishElsewhere("src/pages/home/hero.md", "new hero\n");
51
52
  const sync = await catchUpWithMain(workspace, "thread_a");
52
- expect(sync).toEqual({ inWorkspace: true, changed: ["src/pages/home/hero.md"] });
53
+ expect(sync).toMatchObject({ inWorkspace: true, changed: ["src/pages/home/hero.md"] });
53
54
  expect(await readFile(join(workspace, "src/pages/home/hero.md"), "utf-8")).toBe("new hero\n");
54
55
  expect(await git(workspace, "branch", "--show-current")).toBe("chat/abc");
55
56
  });
@@ -63,7 +64,7 @@ describe("catchUpWithMain", () => {
63
64
  await write(workspace, "src/pages/pricing/index.md", "draft\n");
64
65
  const before = await git(workspace, "rev-parse", "HEAD");
65
66
  await publishElsewhere("src/pages/home/hero.md", "new hero\n");
66
- expect(await catchUpWithMain(workspace, "thread_a")).toEqual({
67
+ expect(await catchUpWithMain(workspace, "thread_a")).toMatchObject({
67
68
  inWorkspace: false,
68
69
  changed: ["src/pages/home/hero.md"],
69
70
  });
@@ -76,7 +77,7 @@ describe("catchUpWithMain", () => {
76
77
  await git(workspace, "commit", "-m", "chat work");
77
78
  const before = await git(workspace, "rev-parse", "HEAD");
78
79
  await publishElsewhere("src/pages/home/hero.md", "new hero\n");
79
- expect(await catchUpWithMain(workspace, "thread_a")).toEqual({
80
+ expect(await catchUpWithMain(workspace, "thread_a")).toMatchObject({
80
81
  inWorkspace: false,
81
82
  changed: ["src/pages/home/hero.md"],
82
83
  });
@@ -97,18 +98,26 @@ describe("catchUpWithMain", () => {
97
98
  expect(await readFile(join(workspace, "src/pages/home/hero.md"), "utf-8")).toBe("old hero\n");
98
99
  });
99
100
  it("tells every thread of the chat what changed, not only the first to catch up", async () => {
101
+ // thread_b ran a turn before the publish, so it read the old hero.
102
+ expect(await catchUpWithMain(workspace, "thread_b")).toBeUndefined();
100
103
  await publishElsewhere("src/pages/home/hero.md", "new hero\n");
101
- await catchUpWithMain(workspace, "thread_a");
102
- expect(await catchUpWithMain(workspace, "thread_b")).toEqual({
104
+ await (await catchUpWithMain(workspace, "thread_a"))?.told();
105
+ expect(await catchUpWithMain(workspace, "thread_b")).toMatchObject({
103
106
  inWorkspace: true,
104
107
  changed: ["src/pages/home/hero.md"],
105
108
  });
106
109
  expect(await catchUpWithMain(workspace, "thread_a")).toBeUndefined();
107
110
  });
108
- it("keeps the news for the thread's next turn when this one cannot carry it", async () => {
111
+ it("tells a thread that starts after the workspace caught up nothing, since it has read nothing stale", async () => {
112
+ await publishElsewhere("src/pages/home/hero.md", "new hero\n");
113
+ await (await catchUpWithMain(workspace, "thread_a"))?.told();
114
+ expect(await catchUpWithMain(workspace, "thread_b")).toBeUndefined();
115
+ });
116
+ it("keeps the news for the thread's next turn until a turn carries it", async () => {
117
+ await catchUpWithMain(workspace, "thread_a");
109
118
  await publishElsewhere("src/pages/home/hero.md", "new hero\n");
110
- await catchUpWithMain(workspace, "thread_a", false);
111
- expect(await catchUpWithMain(workspace, "thread_a")).toEqual({
119
+ await catchUpWithMain(workspace, "thread_a");
120
+ expect(await catchUpWithMain(workspace, "thread_a")).toMatchObject({
112
121
  inWorkspace: true,
113
122
  changed: ["src/pages/home/hero.md"],
114
123
  });
@@ -1 +1 @@
1
- {"version":3,"file":"main-sync.test.js","sourceRoot":"","sources":["../../src/hono/main-sync.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main-sync.test.js","sourceRoot":"","sources":["../../src/hono/main-sync.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,IAAI,IAAY,CAAC;AACjB,IAAI,SAAiB,CAAC;AACtB,IAAI,SAAiB,CAAC;AAEtB,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,GAAG,IAAc;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE;QAC9G,GAAG;KACJ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe;IAC7D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC3D,MAAM,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;IAC/D,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,SAAS,EAAE,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,mEAAmE;IACnE,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACrE,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE1D,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE7C,8EAA8E;QAC9E,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,KAAK,CAAC,SAAS,EAAE,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;YACjE,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;QAC/G,MAAM,KAAK,CAAC,SAAS,EAAE,4BAA4B,EAAE,QAAQ,CAAC,CAAC;QAC/D,MAAM,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;YACjE,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7D,0EAA0E;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACvE,MAAM,SAAS,CACb,IAAI,EACJ,8FAA8F,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAClI,OAAO,CACR,CAAC;QACF,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE1D,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,mEAAmE;QACnE,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACrE,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAE7D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;YACjE,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;QACjH,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAE7D,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,gBAAgB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;YACjE,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,0FAA0F,EAAE,GAAG,EAAE;QAClG,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAE/F,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koda-sl/baker-bridge",
3
- "version": "0.149.0-dev.3d350da58",
3
+ "version": "0.152.0-dev.1a19b1876",
4
4
  "description": "HTTP server wrapping the Claude Agent SDK. Persists chat events to Convex; the dashboard subscribes via Convex realtime",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -48,11 +48,13 @@
48
48
  "hono": "^4.12.25",
49
49
  "image-size": "^2.0.2",
50
50
  "mockttp": "4.6.3",
51
+ "semver": "^7.8.5",
51
52
  "unbash": "4.0.11",
52
53
  "zod": "^4.3.6"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@types/node": "25.3.0",
57
+ "@types/semver": "^7.8.0",
56
58
  "tsx": "^4.0.0",
57
59
  "typescript": "^7.0.2",
58
60
  "undici": "7.29.0",