@koda-sl/baker-bridge 0.136.0-dev.8a743a629 → 0.137.0-dev.2d26314a2

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.
Files changed (39) hide show
  1. package/README.md +10 -1
  2. package/dist/hono/agent.d.ts.map +1 -1
  3. package/dist/hono/agent.js +2 -1
  4. package/dist/hono/agent.js.map +1 -1
  5. package/dist/hono/agent.test.js +5 -0
  6. package/dist/hono/agent.test.js.map +1 -1
  7. package/dist/hono/bridge-job.d.ts +20 -2
  8. package/dist/hono/bridge-job.d.ts.map +1 -1
  9. package/dist/hono/bridge-job.js +77 -5
  10. package/dist/hono/bridge-job.js.map +1 -1
  11. package/dist/hono/bridge-job.test.js +100 -0
  12. package/dist/hono/bridge-job.test.js.map +1 -1
  13. package/dist/hono/convex.d.ts +1 -1
  14. package/dist/hono/convex.d.ts.map +1 -1
  15. package/dist/hono/convex.js.map +1 -1
  16. package/dist/hono/relay.d.ts +1 -1
  17. package/dist/hono/relay.d.ts.map +1 -1
  18. package/dist/hono/relay.js.map +1 -1
  19. package/dist/hono/runtime-files.d.ts +1 -0
  20. package/dist/hono/runtime-files.d.ts.map +1 -1
  21. package/dist/hono/runtime-files.js +1 -0
  22. package/dist/hono/runtime-files.js.map +1 -1
  23. package/dist/hono/session-continuity.d.ts +16 -2
  24. package/dist/hono/session-continuity.d.ts.map +1 -1
  25. package/dist/hono/session-continuity.js +29 -0
  26. package/dist/hono/session-continuity.js.map +1 -1
  27. package/dist/hono/session-continuity.test.js +34 -1
  28. package/dist/hono/session-continuity.test.js.map +1 -1
  29. package/dist/hono/session-store.d.ts +21 -0
  30. package/dist/hono/session-store.d.ts.map +1 -1
  31. package/dist/hono/session-store.js +48 -0
  32. package/dist/hono/session-store.js.map +1 -1
  33. package/dist/hono/session-store.test.d.ts +2 -0
  34. package/dist/hono/session-store.test.d.ts.map +1 -0
  35. package/dist/hono/session-store.test.js +48 -0
  36. package/dist/hono/session-store.test.js.map +1 -0
  37. package/dist/hono/tag-fields.js +6 -6
  38. package/dist/hono/tag-fields.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
+ import { createBridgeRuntimeFiles } from "./runtime-files.js";
6
+ import { createInFlightTurnStore } from "./session-store.js";
7
+ let dir;
8
+ beforeEach(async () => {
9
+ dir = await mkdtemp(join(tmpdir(), "baker-inflight-"));
10
+ });
11
+ afterEach(async () => {
12
+ await rm(dir, { recursive: true, force: true });
13
+ });
14
+ function store() {
15
+ return createInFlightTurnStore(createBridgeRuntimeFiles({ projectRoot: dir, bakerHome: dir }));
16
+ }
17
+ describe("in-flight turn store", () => {
18
+ // The record outlives the bridge process on purpose: a rebooted VM keeps its
19
+ // disk, and the next bridge reads it when Convex sends the same turn again.
20
+ it("reads back the turn a previous bridge process was running", async () => {
21
+ await store().save("thread_1", { turnId: "thread_1:100", sessionId: "s_live", updatedAtMs: 7 });
22
+ await expect(store().load("thread_1")).resolves.toEqual({
23
+ version: 1,
24
+ turnId: "thread_1:100",
25
+ sessionId: "s_live",
26
+ updatedAtMs: 7,
27
+ });
28
+ });
29
+ // A replaced turn's run can finish after its successor started; its cleanup must
30
+ // not erase the record the successor needs if the VM goes down next.
31
+ it("keeps the record when a different turn ends", async () => {
32
+ await store().save("thread_1", { turnId: "thread_1:200", sessionId: "s_next", updatedAtMs: 9 });
33
+ await store().clear("thread_1", "thread_1:100");
34
+ await expect(store().load("thread_1")).resolves.toMatchObject({ turnId: "thread_1:200" });
35
+ });
36
+ it("drops the record when its own turn ends", async () => {
37
+ await store().save("thread_1", { turnId: "thread_1:100", sessionId: "s_live", updatedAtMs: 7 });
38
+ await store().clear("thread_1", "thread_1:100");
39
+ await expect(store().load("thread_1")).resolves.toBeUndefined();
40
+ });
41
+ it("treats a damaged record as no record", async () => {
42
+ const files = createBridgeRuntimeFiles({ projectRoot: dir, bakerHome: dir });
43
+ await store().save("thread_1", { turnId: "thread_1:100", sessionId: "s_live", updatedAtMs: 7 });
44
+ await writeFile(files.inFlightTurnFile("thread_1"), '{"version":1,"turnId":');
45
+ await expect(store().load("thread_1")).resolves.toBeUndefined();
46
+ });
47
+ });
48
+ //# sourceMappingURL=session-store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.test.js","sourceRoot":"","sources":["../../src/hono/session-store.test.ts"],"names":[],"mappings":"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"}
@@ -43,20 +43,20 @@ export const SECRET_FIELDS_BY_TYPE = {
43
43
  * whose fields are `startOfHead`/`endOfHead`/`startOfBody`/`endOfBody`.
44
44
  */
45
45
  export const CONFIG_FIELDS_BY_TYPE = {
46
- meta: ["pixelId", "accessToken", "testEventCode", "offlineOnly"],
47
- chatgptAds: ["pixelId", "apiKey", "offlineOnly"],
46
+ meta: ["pixelId", "accessToken", "testEventCode"],
47
+ chatgptAds: ["pixelId", "apiKey"],
48
48
  amplitude: ["apiKey", "residencyServer"],
49
- googleAds: ["conversionID", "oauthProviderId", "customerAccountId", "offlineOnly"],
49
+ googleAds: ["conversionID", "oauthProviderId", "customerAccountId"],
50
50
  tiktok: ["pixelCode", "accessToken"],
51
51
  vwo: ["accountId"],
52
52
  hotjar: ["siteID"],
53
53
  clarity: ["projectId"],
54
54
  pinterest: ["tagId", "adAccountId", "conversionToken"],
55
55
  code: ["startOfHead", "endOfHead", "startOfBody", "endOfBody"],
56
- googleAnalytics: ["measurementId", "apiSecret", "googleTagId", "offlineOnly"],
56
+ googleAnalytics: ["measurementId", "apiSecret", "googleTagId"],
57
57
  googleTagManager: ["containerID", "authorizationToken", "oauthProviderId", "customDomainUrl", "environmentId"],
58
58
  hubspot: ["hubID"],
59
- linkedinInsightTag: ["partnerId", "oauthProviderId", "offlineOnly"],
59
+ linkedinInsightTag: ["partnerId", "oauthProviderId"],
60
60
  onetrust: ["domainId", "customDomain", "language", "autoBlock", "wrapperBody"],
61
61
  posthog: [
62
62
  "projectToken",
@@ -73,7 +73,7 @@ export const CONFIG_FIELDS_BY_TYPE = {
73
73
  ],
74
74
  datafast: ["websiteId", "apiKey", "mode"],
75
75
  recaptcha: ["siteKey", "hideBadge"],
76
- twitterAds: ["pixelId", "oauthProviderId", "offlineOnly"],
76
+ twitterAds: ["pixelId", "oauthProviderId"],
77
77
  activecampaign: ["trackingAccountId"],
78
78
  };
79
79
  //# sourceMappingURL=tag-fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag-fields.js","sourceRoot":"","sources":["../../src/hono/tag-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,IAAI,EAAE,CAAC,aAAa,CAAC;IACrB,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,CAAC;IACpF,MAAM,EAAE,CAAC,aAAa,CAAC;IACvB,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,IAAI,EAAE,EAAE;IACR,eAAe,EAAE,CAAC,WAAW,CAAC;IAC9B,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IAC3D,OAAO,EAAE,EAAE;IACX,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;IACvC,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,CAAC,iBAAiB,CAAC;IAC/B,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC;IAChE,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;IAChD,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACxC,SAAS,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,CAAC;IAClF,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,GAAG,EAAE,CAAC,WAAW,CAAC;IAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,CAAC;IACtD,IAAI,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;IAC9D,eAAe,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;IAC7E,gBAAgB,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,CAAC;IAC9G,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,kBAAkB,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC;IACnE,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC;IAC9E,OAAO,EAAE;QACP,cAAc;QACd,MAAM;QACN,WAAW;QACX,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;KACjB;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;IACnC,UAAU,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC;IACzD,cAAc,EAAE,CAAC,mBAAmB,CAAC;CACtC,CAAC"}
1
+ {"version":3,"file":"tag-fields.js","sourceRoot":"","sources":["../../src/hono/tag-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,IAAI,EAAE,CAAC,aAAa,CAAC;IACrB,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,CAAC;IACpF,MAAM,EAAE,CAAC,aAAa,CAAC;IACvB,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,IAAI,EAAE,EAAE;IACR,eAAe,EAAE,CAAC,WAAW,CAAC;IAC9B,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IAC3D,OAAO,EAAE,EAAE;IACX,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;IACvC,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,CAAC,iBAAiB,CAAC;IAC/B,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACxC,SAAS,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;IACnE,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,GAAG,EAAE,CAAC,WAAW,CAAC;IAClB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,CAAC;IACtD,IAAI,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC;IAC9D,eAAe,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,CAAC;IAC9D,gBAAgB,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,CAAC;IAC9G,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,kBAAkB,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACpD,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC;IAC9E,OAAO,EAAE;QACP,cAAc;QACd,MAAM;QACN,WAAW;QACX,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;KACjB;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;IACnC,UAAU,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC1C,cAAc,EAAE,CAAC,mBAAmB,CAAC;CACtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koda-sl/baker-bridge",
3
- "version": "0.136.0-dev.8a743a629",
3
+ "version": "0.137.0-dev.2d26314a2",
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",