@koda-sl/baker-bridge 0.25.0 → 0.26.0

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 CHANGED
@@ -126,6 +126,43 @@ pnpm --filter @koda-sl/baker-bridge link:local # Build + link for local testi
126
126
  pnpm --filter @koda-sl/baker-bridge unlink:local # Remove link, restore registry version
127
127
  ```
128
128
 
129
+ ## Publishing
130
+
131
+ ### Auto-publish (CI)
132
+
133
+ Pushing to `main` with changes in `packages/bridge/` triggers the GitHub Actions workflow, which publishes to npm with the `latest` tag by default. To publish a pre-release, use the workflow dispatch with `npm_tag: next`.
134
+
135
+ ### Manual publish
136
+
137
+ From the monorepo root:
138
+
139
+ ```bash
140
+ # Publish as @latest (production)
141
+ ./scripts/publish-package.sh bridge
142
+
143
+ # Publish as @next (pre-release)
144
+ ./scripts/publish-package.sh bridge next
145
+ ```
146
+
147
+ The script checks for duplicate versions, builds, and publishes. Bump the version in `package.json` before publishing.
148
+
149
+ ### Testing a pre-release in sandboxes
150
+
151
+ When you publish a `@next` version, sandboxes won't use it automatically — they use the version baked into the template. To override:
152
+
153
+ ```bash
154
+ # Point sandboxes to the pre-release version
155
+ npx convex env set BAKER_BRIDGE_VERSION <version>
156
+ ```
157
+
158
+ The sandbox startup (`nodeActions.ts`) checks this env var and runs `npm install -g @koda-sl/baker-bridge@<version>` before starting. This is optional — when unset, the default template version is used.
159
+
160
+ After testing, always clean up to avoid running pre-release in production:
161
+
162
+ ```bash
163
+ npx convex env remove BAKER_BRIDGE_VERSION
164
+ ```
165
+
129
166
  ## Requirements
130
167
 
131
168
  - Node.js 18+
@@ -2,5 +2,6 @@ export declare const env: Readonly<{
2
2
  AUTH_TOKEN: string;
3
3
  BAKER_CONVEX_SITE_URL: string;
4
4
  BAKER_API_KEY: string;
5
+ INTERNAL_SECRET_KEY: string;
5
6
  }>;
6
7
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/hono/env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,GAAG;;;;EAOd,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/hono/env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,GAAG;;;;;EAQd,CAAC"}
package/dist/hono/env.js CHANGED
@@ -5,6 +5,7 @@ export const env = createEnv({
5
5
  AUTH_TOKEN: z.string().min(1),
6
6
  BAKER_CONVEX_SITE_URL: z.url(),
7
7
  BAKER_API_KEY: z.string().min(1),
8
+ INTERNAL_SECRET_KEY: z.string().min(1),
8
9
  },
9
10
  runtimeEnv: process.env,
10
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/hono/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE;QAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACjC;IACD,UAAU,EAAE,OAAO,CAAC,GAAG;CACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/hono/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE;QAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACvC;IACD,UAAU,EAAE,OAAO,CAAC,GAAG;CACxB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ type AnyRecord = Record<string, unknown>;
2
+ export declare function createFlowEncoder(secretKey: string): {
3
+ encodeFlowTree(tree: AnyRecord): AnyRecord;
4
+ decodeFlowTree(tree: AnyRecord): AnyRecord;
5
+ };
6
+ export {};
7
+ //# sourceMappingURL=flow-crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-crypto.d.ts","sourceRoot":"","sources":["../../src/hono/flow-crypto.ts"],"names":[],"mappings":"AA2CA,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAgEzC,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM;yBAI1B,SAAS,GAAG,SAAS;yBAGrB,SAAS,GAAG,SAAS;EAI7C"}
@@ -0,0 +1,96 @@
1
+ import { createCipheriv, createDecipheriv, createHash, randomBytes } from "node:crypto";
2
+ // ---------------------------------------------------------------------------
3
+ // Encoder — AES-256-CBC with URL-safe Base64
4
+ // ---------------------------------------------------------------------------
5
+ class Encoder {
6
+ key;
7
+ constructor(secretKey) {
8
+ this.key = createHash("sha256").update(secretKey).digest();
9
+ }
10
+ encode(value) {
11
+ const iv = randomBytes(16);
12
+ const cipher = createCipheriv("aes-256-cbc", this.key, iv);
13
+ const encrypted = Buffer.concat([cipher.update(value, "utf8"), cipher.final()]);
14
+ return Buffer.concat([iv, encrypted]).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
15
+ }
16
+ decode(encoded) {
17
+ const normalizedBase64 = encoded
18
+ .replace(/-/g, "+")
19
+ .replace(/_/g, "/")
20
+ .padEnd(encoded.length + ((4 - (encoded.length % 4)) % 4), "=");
21
+ const buffer = Buffer.from(normalizedBase64, "base64");
22
+ const iv = buffer.subarray(0, 16);
23
+ const encrypted = buffer.subarray(16);
24
+ const decipher = createDecipheriv("aes-256-cbc", this.key, iv);
25
+ return Buffer.concat([decipher.update(encrypted), decipher.final()]).toString("utf8");
26
+ }
27
+ }
28
+ function encodeSideEffects(sideEffects, encoder) {
29
+ return sideEffects.map((se) => {
30
+ if (!se || typeof se !== "object")
31
+ return se;
32
+ const effect = se;
33
+ if (!("encryptedConfig" in effect))
34
+ return se;
35
+ if (typeof effect.encryptedConfig === "string")
36
+ return se;
37
+ if (effect.encryptedConfig === null || effect.encryptedConfig === undefined)
38
+ return se;
39
+ return {
40
+ ...effect,
41
+ encryptedConfig: encoder.encode(JSON.stringify(effect.encryptedConfig)),
42
+ };
43
+ });
44
+ }
45
+ function decodeSideEffects(sideEffects, encoder) {
46
+ return sideEffects.map((se) => {
47
+ if (!se || typeof se !== "object")
48
+ return se;
49
+ const effect = se;
50
+ if (!("encryptedConfig" in effect))
51
+ return se;
52
+ if (typeof effect.encryptedConfig !== "string")
53
+ return se;
54
+ if (effect.encryptedConfig === "")
55
+ return se;
56
+ return {
57
+ ...effect,
58
+ encryptedConfig: JSON.parse(encoder.decode(effect.encryptedConfig)),
59
+ };
60
+ });
61
+ }
62
+ function encodeNode(node, encoder) {
63
+ const result = { ...node };
64
+ if (Array.isArray(node.sideEffects)) {
65
+ result.sideEffects = encodeSideEffects(node.sideEffects, encoder);
66
+ }
67
+ if (Array.isArray(node.children)) {
68
+ result.children = node.children.map((child) => encodeNode(child, encoder));
69
+ }
70
+ return result;
71
+ }
72
+ function decodeNode(node, encoder) {
73
+ const result = { ...node };
74
+ if (Array.isArray(node.sideEffects)) {
75
+ result.sideEffects = decodeSideEffects(node.sideEffects, encoder);
76
+ }
77
+ if (Array.isArray(node.children)) {
78
+ result.children = node.children.map((child) => decodeNode(child, encoder));
79
+ }
80
+ return result;
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // Public API
84
+ // ---------------------------------------------------------------------------
85
+ export function createFlowEncoder(secretKey) {
86
+ const encoder = new Encoder(secretKey);
87
+ return {
88
+ encodeFlowTree(tree) {
89
+ return encodeNode(tree, encoder);
90
+ },
91
+ decodeFlowTree(tree) {
92
+ return decodeNode(tree, encoder);
93
+ },
94
+ };
95
+ }
96
+ //# sourceMappingURL=flow-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-crypto.js","sourceRoot":"","sources":["../../src/hono/flow-crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flow-crypto.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-crypto.test.d.ts","sourceRoot":"","sources":["../../src/hono/flow-crypto.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { createFlowEncoder } from "./flow-crypto.js";
3
+ const SECRET = "test-secret-key-for-vitest";
4
+ const { encodeFlowTree, decodeFlowTree } = createFlowEncoder(SECRET);
5
+ /** Helper: get first side effect from a tree */
6
+ function firstSe(tree) {
7
+ const effects = tree.sideEffects;
8
+ return effects[0];
9
+ }
10
+ /** Helper: get side effect at index from a tree */
11
+ function seAt(tree, index) {
12
+ const effects = tree.sideEffects;
13
+ return effects[index];
14
+ }
15
+ /** Helper: get child at index */
16
+ function childAt(tree, index) {
17
+ const children = tree.children;
18
+ return children[index];
19
+ }
20
+ // ---------------------------------------------------------------------------
21
+ // Encoder round-trip
22
+ // ---------------------------------------------------------------------------
23
+ describe("Encoder", () => {
24
+ const { encodeFlowTree: encode, decodeFlowTree: decode } = createFlowEncoder(SECRET);
25
+ function roundTrip(config) {
26
+ const tree = {
27
+ id: "n1",
28
+ sideEffects: [{ type: "zapier", encryptedConfig: config }],
29
+ children: [],
30
+ };
31
+ const encoded = encode(tree);
32
+ const decoded = decode(encoded);
33
+ const se = firstSe(decoded);
34
+ return se.encryptedConfig;
35
+ }
36
+ it("round-trips a simple config", () => {
37
+ const config = { zapUrl: "https://hooks.zapier.com/abc" };
38
+ expect(roundTrip(config)).toEqual(config);
39
+ });
40
+ it("round-trips a complex config with nested fields", () => {
41
+ const config = {
42
+ apiUrl: "https://api.example.com",
43
+ auth: "bearerTokenAuth",
44
+ bearerToken: "sk-secret-123",
45
+ sendWithExtraContext: true,
46
+ };
47
+ expect(roundTrip(config)).toEqual(config);
48
+ });
49
+ it("round-trips unicode and special characters", () => {
50
+ const config = { zapUrl: "https://example.com/ñ?q=café&token=a+b/c==" };
51
+ expect(roundTrip(config)).toEqual(config);
52
+ });
53
+ it("produces URL-safe output (no +, /, =)", () => {
54
+ const tree = {
55
+ id: "n1",
56
+ sideEffects: [{ type: "zapier", encryptedConfig: { zapUrl: "https://hooks.zapier.com/test" } }],
57
+ children: [],
58
+ };
59
+ const encoded = encode(tree);
60
+ const se = firstSe(encoded);
61
+ const encrypted = se.encryptedConfig;
62
+ expect(encrypted).not.toContain("+");
63
+ expect(encrypted).not.toContain("/");
64
+ expect(encrypted).not.toContain("=");
65
+ });
66
+ it("produces different ciphertext for same input (random IV)", () => {
67
+ const tree = {
68
+ id: "n1",
69
+ sideEffects: [{ type: "zapier", encryptedConfig: { zapUrl: "https://same.url" } }],
70
+ children: [],
71
+ };
72
+ const a = encode(tree);
73
+ const b = encode(tree);
74
+ expect(firstSe(a).encryptedConfig).not.toBe(firstSe(b).encryptedConfig);
75
+ });
76
+ });
77
+ // ---------------------------------------------------------------------------
78
+ // Tree encode/decode
79
+ // ---------------------------------------------------------------------------
80
+ describe("encodeFlowTree", () => {
81
+ it("encodes only side effects with encryptedConfig object", () => {
82
+ const tree = {
83
+ id: "root",
84
+ sideEffects: [
85
+ { type: "meta", tagIds: ["t1"], eventName: "Lead" },
86
+ { type: "zapier", encryptedConfig: { zapUrl: "https://hooks.zapier.com/123" }, payloadKeys: [] },
87
+ ],
88
+ children: [],
89
+ };
90
+ const encoded = encodeFlowTree(tree);
91
+ // Meta side effect untouched
92
+ expect(seAt(encoded, 0)).toEqual(tree.sideEffects[0]);
93
+ // Zapier encryptedConfig is now a string
94
+ expect(typeof seAt(encoded, 1).encryptedConfig).toBe("string");
95
+ expect(seAt(encoded, 1).payloadKeys).toEqual([]);
96
+ });
97
+ it("skips empty string encryptedConfig", () => {
98
+ const tree = {
99
+ id: "root",
100
+ sideEffects: [{ type: "crmble", encryptedConfig: "", fieldMapping: [] }],
101
+ children: [],
102
+ };
103
+ const encoded = encodeFlowTree(tree);
104
+ expect(firstSe(encoded).encryptedConfig).toBe("");
105
+ });
106
+ it("skips null/undefined encryptedConfig", () => {
107
+ const tree = {
108
+ id: "root",
109
+ sideEffects: [{ type: "zapier", encryptedConfig: null, payloadKeys: [] }],
110
+ children: [],
111
+ };
112
+ const encoded = encodeFlowTree(tree);
113
+ expect(firstSe(encoded).encryptedConfig).toBeNull();
114
+ });
115
+ });
116
+ describe("decodeFlowTree", () => {
117
+ it("round-trips a full tree with encode → decode", () => {
118
+ const tree = {
119
+ id: "root",
120
+ sideEffects: [
121
+ { type: "zapier", encryptedConfig: { zapUrl: "https://hooks.zapier.com/abc" }, payloadKeys: [] },
122
+ {
123
+ type: "httpWebhook",
124
+ encryptedConfig: { apiUrl: "https://api.example.com", auth: "noAuth" },
125
+ payloadKeys: [],
126
+ },
127
+ ],
128
+ children: [],
129
+ };
130
+ const result = decodeFlowTree(encodeFlowTree(tree));
131
+ expect(result).toEqual(tree);
132
+ });
133
+ it("skips empty string encryptedConfig on decode", () => {
134
+ const tree = {
135
+ id: "root",
136
+ sideEffects: [{ type: "crmble", encryptedConfig: "", fieldMapping: [] }],
137
+ children: [],
138
+ };
139
+ const result = decodeFlowTree(tree);
140
+ expect(firstSe(result).encryptedConfig).toBe("");
141
+ });
142
+ });
143
+ // ---------------------------------------------------------------------------
144
+ // Recursive children
145
+ // ---------------------------------------------------------------------------
146
+ describe("recursive tree walk", () => {
147
+ it("encodes and decodes nested children", () => {
148
+ const tree = {
149
+ id: "root",
150
+ sideEffects: [],
151
+ children: [
152
+ {
153
+ id: "child-1",
154
+ sideEffects: [
155
+ { type: "zapier", encryptedConfig: { zapUrl: "https://hooks.zapier.com/child1" }, payloadKeys: [] },
156
+ ],
157
+ children: [
158
+ {
159
+ id: "grandchild",
160
+ sideEffects: [
161
+ {
162
+ type: "crmble",
163
+ encryptedConfig: { teamId: 42, apiToken: "secret-token" },
164
+ fieldMapping: [],
165
+ },
166
+ ],
167
+ children: [],
168
+ },
169
+ ],
170
+ },
171
+ {
172
+ id: "child-2",
173
+ sideEffects: [{ type: "meta", tagIds: ["t1"], eventName: "Lead" }],
174
+ children: [],
175
+ },
176
+ ],
177
+ };
178
+ const encoded = encodeFlowTree(tree);
179
+ // Verify child-1 zapier is encrypted
180
+ const child1 = childAt(encoded, 0);
181
+ expect(typeof firstSe(child1).encryptedConfig).toBe("string");
182
+ // Verify grandchild crmble is encrypted
183
+ const grandchild = childAt(child1, 0);
184
+ expect(typeof firstSe(grandchild).encryptedConfig).toBe("string");
185
+ // Verify child-2 meta is untouched
186
+ const child2 = childAt(encoded, 1);
187
+ expect(child2.sideEffects).toEqual(tree.children[1]?.sideEffects);
188
+ // Full round-trip
189
+ const decoded = decodeFlowTree(encoded);
190
+ expect(decoded).toEqual(tree);
191
+ });
192
+ });
193
+ //# sourceMappingURL=flow-crypto.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-crypto.test.js","sourceRoot":"","sources":["../../src/hono/flow-crypto.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA4B5B,wBAAgB,YAAY;;iBAwJR,OAAO,CAAC,IAAI,CAAC;gBAUd,OAAO,CAAC,IAAI,CAAC;EAiB/B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA6B5B,wBAAgB,YAAY;;iBA6JR,OAAO,CAAC,IAAI,CAAC;gBAUd,OAAO,CAAC,IAAI,CAAC;EAiB/B"}
@@ -8,6 +8,7 @@ import { cors } from "hono/cors";
8
8
  import { getOrCreateSession } from "./agent.js";
9
9
  import { postToConvex, processAsync } from "./callback.js";
10
10
  import { env } from "./env.js";
11
+ import { createFlowEncoder } from "./flow-crypto.js";
11
12
  const FLOWS_DIR = join(process.cwd(), "src/lib/flow-engine/flows");
12
13
  /** Relay a non-streaming event to Convex (fire-and-forget) */
13
14
  function relayToConvex(threadId, message) {
@@ -37,12 +38,15 @@ export function createServer() {
37
38
  return c.json({ status: "ok", projectDir: process.cwd() });
38
39
  });
39
40
  // Flow data — read/write _data.json files (no auth, already inside sandbox)
41
+ // encryptedConfig fields are encrypted at rest and decoded on read.
42
+ const { encodeFlowTree, decodeFlowTree } = createFlowEncoder(env.INTERNAL_SECRET_KEY);
40
43
  app.get("/flows/:slug", async (c) => {
41
44
  const slug = c.req.param("slug");
42
45
  const filePath = join(FLOWS_DIR, slug, "_data.json");
43
46
  try {
44
47
  const content = await readFile(filePath, "utf-8");
45
- return c.json(JSON.parse(content));
48
+ const tree = JSON.parse(content);
49
+ return c.json(decodeFlowTree(tree));
46
50
  }
47
51
  catch {
48
52
  return c.json({ error: "Flow not found" }, 404);
@@ -53,9 +57,10 @@ export function createServer() {
53
57
  const dir = join(FLOWS_DIR, slug);
54
58
  const filePath = join(dir, "_data.json");
55
59
  try {
56
- const body = await c.req.json();
60
+ const body = (await c.req.json());
61
+ const encoded = encodeFlowTree(body);
57
62
  await mkdir(dir, { recursive: true });
58
- await writeFile(filePath, JSON.stringify(body, null, 2), "utf-8");
63
+ await writeFile(filePath, JSON.stringify(encoded, null, 2), "utf-8");
59
64
  return c.body(null, 204);
60
65
  }
61
66
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAmB,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;AAEnE,8DAA8D;AAC9D,SAAS,aAAa,CAAC,QAAgB,EAAE,OAAmB;IAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,KAAK,YAAY,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,yCAAyC;AACzC,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAe,EAAE,OAAgB,EAAE,MAAiB;IAC5F,KAAK,YAAY,CAAC,oBAAoB,EAAE;QACtC,QAAQ;QACR,OAAO;QACP,OAAO;QACP,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC;IAClB,MAAM,IAAI,GAAG,SAAS,CAAC;IAEvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3E,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAEnE,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEtF,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;YAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,GAAG,CAAC,GAAG,CACL,KAAK,EACL,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,OAAO;YACL,MAAM,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,KAAK,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC;oBAC7B,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,SAAS,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,GAAsB,CAAC;gBAC3B,IAAI,CAAC;oBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAsB,CAAC;gBAC1F,CAAC;gBAAC,MAAM,CAAC;oBACP,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;oBAClE,OAAO;gBACT,CAAC;gBAED,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,MAAM,CAAC,CAAC,CAAC;wBACZ,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;wBAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;wBAE7C,OAAO,CAAC,aAAa,CACnB,OAAO,EACP;4BACE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gCACf,IAAI,CAAC;oCACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gCACrD,CAAC;gCAAC,MAAM,CAAC;oCACP,6CAA6C;gCAC/C,CAAC;gCACD,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;4BAC7B,CAAC;4BACD,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;gCACvC,IAAI,CAAC;oCACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gCAC3E,CAAC;gCAAC,MAAM,CAAC;oCACP,wEAAwE;gCAC1E,CAAC;4BACH,CAAC;4BACD,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gCACvC,IAAI,CAAC;oCACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gCACxE,CAAC;gCAAC,MAAM,CAAC;oCACP,2CAA2C;gCAC7C,CAAC;gCACD,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;4BACrD,CAAC;yBACF,EACD,WAAW,CACZ,CAAC;wBACF,MAAM;oBACR,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACjD,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACpD,MAAM;oBACR,CAAC;oBACD;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YACD,OAAO;gBACL,yDAAyD;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,oEAAoE;IACpE,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAuB,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAA6E,CAAC;QAE3G,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAsB,IAAI,CAAC;IAErC,SAAS,KAAK;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;gBAC9D,OAAO,CAAC,IAAI,CAAC,oCAAoC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;gBACjE,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,IAAI;QACX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC,GAAsB,EAAE,EAAE;gBACtC,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koda-sl/baker-bridge",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "HTTP server wrapping the Claude Agent SDK with SSE streaming, WebSocket, and async endpoints",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -33,6 +33,7 @@
33
33
  "build": "rm -rf dist && tsc",
34
34
  "dev": "tsx watch src/cli.ts",
35
35
  "start": "node dist/cli.js",
36
+ "test": "vitest run",
36
37
  "typecheck": "tsc --noEmit",
37
38
  "link:local": "bash scripts/link-local.sh",
38
39
  "unlink:local": "bash scripts/unlink-local.sh"
@@ -48,7 +49,8 @@
48
49
  "devDependencies": {
49
50
  "@types/node": "25.3.0",
50
51
  "tsx": "^4.0.0",
51
- "typescript": "^5.9.3"
52
+ "typescript": "^5.9.3",
53
+ "vitest": "^4.0.18"
52
54
  },
53
55
  "repository": {
54
56
  "type": "git",