@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.
- package/README.md +9 -3
- package/dist/hono/agent.js +1 -1
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/bridge-job.d.ts +1 -1
- package/dist/hono/bridge-job.d.ts.map +1 -1
- package/dist/hono/bridge-job.js +10 -7
- package/dist/hono/bridge-job.js.map +1 -1
- package/dist/hono/bridge-job.test.js +65 -1
- package/dist/hono/bridge-job.test.js.map +1 -1
- package/dist/hono/cli-sync.d.ts +0 -2
- package/dist/hono/cli-sync.d.ts.map +1 -1
- package/dist/hono/cli-sync.js +45 -30
- package/dist/hono/cli-sync.js.map +1 -1
- package/dist/hono/cli-sync.test.js +45 -4
- package/dist/hono/cli-sync.test.js.map +1 -1
- package/dist/hono/main-sync.d.ts +6 -5
- package/dist/hono/main-sync.d.ts.map +1 -1
- package/dist/hono/main-sync.js +21 -18
- package/dist/hono/main-sync.js.map +1 -1
- package/dist/hono/main-sync.test.js +17 -8
- package/dist/hono/main-sync.test.js.map +1 -1
- package/package.json +3 -1
package/dist/hono/cli-sync.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/hono/cli-sync.js
CHANGED
|
@@ -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
|
|
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
|
|
40
|
+
return valid(wanted) ?? undefined;
|
|
45
41
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
69
|
-
|
|
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,
|
|
90
|
+
timer = setTimeout(() => done(false), WAIT_MS);
|
|
87
91
|
timer.unref?.();
|
|
88
92
|
});
|
|
89
|
-
|
|
90
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-sync.js","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AAEH,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,uFAAuF;AACvF,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;AACjC,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AAInC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAuB,EAAE,SAAiB;IACnF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAO,GAAkB,EAAE;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC;IACtC,IAAI,SAA6B,CAAC;IAClC,4FAA4F;IAC5F,IAAI,MAAqF,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,QAA6D,CAAC;IAElE,MAAM,IAAI,GAAG,KAAK,EAAE,OAAe,EAAE,IAAuB,EAA+B,EAAE,CAC3F,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;IAEzE,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAA+B,EAAE;QACpE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;QACpC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;QACnF,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,WAAW,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CACtG,CAAC,KAAc,EAAE,EAAE;gBACjB,OAAO,CAAC,KAAK,CAAC,0DAA0D,EAAE,KAAK,CAAC,CAAC;gBACjF,OAAO,SAAS,CAAC;YACnB,CAAC,CACF,CAAC;YACF,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACvG,CAAC;QACD,OAAO,MAAM,EAAE,OAAO,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACtF,CAAC;gBAAS,CAAC;YACT,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,MAAc,EAA2C,EAAE;QACxE,MAAM,OAAO,GAAG;YACd,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;iBACf,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,OAAO,CAAC,KAAK,CAAC,yCAAyC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC,CAAC;SACL,CAAC;QACF,QAAQ,GAAG,OAAO,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE;QACtB,IAAI,KAAgD,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAQ,CAAC,IAAI,EAAE,EAAE;YACxC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/C,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,yFAAyF;YACzF,SAAS,CAAC;gBACR,MAAM,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1C,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -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
|
-
|
|
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
|
|
111
|
+
const turn = cliKeeper({ run })("0.412.0").then(() => {
|
|
71
112
|
released = true;
|
|
72
113
|
});
|
|
73
|
-
await vi.advanceTimersByTimeAsync(
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-sync.test.js","sourceRoot":"","sources":["../../src/hono/cli-sync.test.ts"],"names":[],"mappings":"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"}
|
package/dist/hono/main-sync.d.ts
CHANGED
|
@@ -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.
|
|
10
|
-
*
|
|
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
|
|
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;
|
|
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"}
|
package/dist/hono/main-sync.js
CHANGED
|
@@ -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
|
|
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.
|
|
75
|
-
*
|
|
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
|
|
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 (
|
|
89
|
+
if (main === undefined) {
|
|
93
90
|
return undefined;
|
|
94
91
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
.
|
|
98
|
-
|
|
99
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,2EAA2E;AAC3E,6EAA6E;AAC7E
|
|
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).
|
|
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")).
|
|
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")).
|
|
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")).
|
|
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("
|
|
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"
|
|
111
|
-
expect(await catchUpWithMain(workspace, "thread_a")).
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koda-sl/baker-bridge",
|
|
3
|
-
"version": "0.
|
|
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",
|