@koda-sl/baker-bridge 0.149.0-dev.3d350da58 → 0.149.0-dev.74f6c7937

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 (48) hide show
  1. package/README.md +21 -29
  2. package/dist/hono/agent-session.d.ts +0 -1
  3. package/dist/hono/agent-session.d.ts.map +1 -1
  4. package/dist/hono/agent-session.js +0 -7
  5. package/dist/hono/agent-session.js.map +1 -1
  6. package/dist/hono/agent-session.test.js +1 -7
  7. package/dist/hono/agent-session.test.js.map +1 -1
  8. package/dist/hono/agent.d.ts.map +1 -1
  9. package/dist/hono/agent.js +2 -15
  10. package/dist/hono/agent.js.map +1 -1
  11. package/dist/hono/bridge-job.d.ts +3 -19
  12. package/dist/hono/bridge-job.d.ts.map +1 -1
  13. package/dist/hono/bridge-job.js +98 -25
  14. package/dist/hono/bridge-job.js.map +1 -1
  15. package/dist/hono/bridge-job.test.js +113 -76
  16. package/dist/hono/bridge-job.test.js.map +1 -1
  17. package/dist/hono/session-continuity.d.ts +24 -0
  18. package/dist/hono/session-continuity.d.ts.map +1 -1
  19. package/dist/hono/session-continuity.integration.test.js +156 -5
  20. package/dist/hono/session-continuity.integration.test.js.map +1 -1
  21. package/dist/hono/session-continuity.js +91 -7
  22. package/dist/hono/session-continuity.js.map +1 -1
  23. package/dist/hono/session-store.d.ts +2 -0
  24. package/dist/hono/session-store.d.ts.map +1 -1
  25. package/dist/hono/session-store.js +6 -0
  26. package/dist/hono/session-store.js.map +1 -1
  27. package/dist/hono/turn-events.d.ts +1 -1
  28. package/dist/hono/turn-events.d.ts.map +1 -1
  29. package/dist/hono/turn-events.js.map +1 -1
  30. package/dist/hono/types.d.ts +0 -6
  31. package/dist/hono/types.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/hono/cli-sync.d.ts +0 -8
  34. package/dist/hono/cli-sync.d.ts.map +0 -1
  35. package/dist/hono/cli-sync.js +0 -93
  36. package/dist/hono/cli-sync.js.map +0 -1
  37. package/dist/hono/cli-sync.test.d.ts +0 -2
  38. package/dist/hono/cli-sync.test.d.ts.map +0 -1
  39. package/dist/hono/cli-sync.test.js +0 -81
  40. package/dist/hono/cli-sync.test.js.map +0 -1
  41. package/dist/hono/main-sync.d.ts +0 -19
  42. package/dist/hono/main-sync.d.ts.map +0 -1
  43. package/dist/hono/main-sync.js +0 -147
  44. package/dist/hono/main-sync.js.map +0 -1
  45. package/dist/hono/main-sync.test.d.ts +0 -2
  46. package/dist/hono/main-sync.test.d.ts.map +0 -1
  47. package/dist/hono/main-sync.test.js +0 -124
  48. package/dist/hono/main-sync.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/hono/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/hono/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAA2B,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwBnG,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACjF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,IAAI,KAAK,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACnH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,mBAAmB,IAAI,KAAK;QAC5B,KAAK,CAAC,iBAAiB,KAAK,SAAS;QACrC,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,EAC3C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA+B;IAC3D,OAAO;QACL,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,QAA+B;IACzF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAC7C,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,EACxC,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtD,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;IACrF,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,KAAK,CAAC,OAAO,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CACnC,CAAC;AACJ,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAmD,EACnD,KAAK,GAAG,gBAAgB;IAExB,MAAM,IAAI,GAAG,KAAK,EAAE,QAAgB,EAAqC,EAAE;QACzE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,IAAI;QACJ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI;YACvB,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM;YAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACzC,OAAO;YACT,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC"}
@@ -11,7 +11,7 @@
11
11
  * One line per event, appended next to the relay errors. Fail-open in the same
12
12
  * way and for the same reason: telemetry must never be able to end a turn.
13
13
  */
14
- export type TurnEventName = "session" | "stall" | "stall_retry" | "watchdog_abort" | "dirty_session" | "control_deny" | "compaction" | "model_refusal" | "turn_end";
14
+ export type TurnEventName = "session" | "stall" | "stall_retry" | "watchdog_abort" | "dirty_session" | "cancel_resume_point" | "control_deny" | "compaction" | "model_refusal" | "api_error" | "turn_end";
15
15
  export type TurnEvent = {
16
16
  timestamp: string;
17
17
  threadId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"turn-events.d.ts","sourceRoot":"","sources":["../../src/hono/turn-events.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAGrB,SAAS,GACT,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,YAAY,GACZ,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,GAAG,SAAS,CAQZ;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,KAAK,IAAI,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,iBAI7B,CAAC"}
1
+ {"version":3,"file":"turn-events.d.ts","sourceRoot":"","sources":["../../src/hono/turn-events.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAGrB,SAAS,GACT,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,eAAe,GAEf,qBAAqB,GACrB,cAAc,GACd,YAAY,GACZ,eAAe,GAGf,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,GAAG,SAAS,CAQZ;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,KAAK,IAAI,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,iBAI7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"turn-events.js","sourceRoot":"","sources":["../../src/hono/turn-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAqC1E,MAAM,UAAU,cAAc,CAAC,KAM9B;IACC,OAAO;QACL,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AASD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,KAAK,EAAE,EAAE;IAC1D,KAAK,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACvG,6CAA6C;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"turn-events.js","sourceRoot":"","sources":["../../src/hono/turn-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0C1E,MAAM,UAAU,cAAc,CAAC,KAM9B;IACC,OAAO;QACL,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AASD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,KAAK,EAAE,EAAE;IAC1D,KAAK,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACvG,6CAA6C;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -84,12 +84,6 @@ export interface AsyncMessageRequest {
84
84
  * time out and park the thread forever. See `deniedUnattendedPrompt`.
85
85
  */
86
86
  unattended?: boolean;
87
- /**
88
- * The CLI release this turn should run: an exact version, or `latest` where
89
- * the deployment pins none. Never sent on a Session review, which keeps the
90
- * CLI the Session ran.
91
- */
92
- cliVersion?: string;
93
87
  /**
94
88
  * This turn is the platform's own read-only Session review, running inside the
95
89
  * finished Session's Runtime. Present only on a thread whose runtime kind is
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hono/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,8GAA8G;IAC9G,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,iHAAiH;IACjH,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,cAAc,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sGAAsG;IACtG,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,gFAAgF;IAChF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hono/types.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.149.0-dev.3d350da58",
3
+ "version": "0.149.0-dev.74f6c7937",
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",
@@ -1,8 +0,0 @@
1
- type Run = (command: string, args: readonly string[], timeoutMs: number) => Promise<string>;
2
- export declare function cliKeeper(options?: {
3
- run?: Run;
4
- now?: () => number;
5
- waitMs?: number;
6
- }): (wanted: string) => Promise<void>;
7
- export {};
8
- //# sourceMappingURL=cli-sync.d.ts.map
@@ -1 +0,0 @@
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,93 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { promisify } from "node:util";
3
- /**
4
- * Keeps the Runtime's `baker` CLI on the release Convex names for each turn.
5
- *
6
- * The CLI is a global install made once, when the Runtime activates, while the
7
- * workspace is brought up to date with main before every turn (`main-sync.ts`).
8
- * Main's skills and tool docs describe the CLI main released, so a Runtime that
9
- * lived through a release read docs for commands its CLI did not have. So,
10
- * before a turn, a CLI on another release is replaced with the one named.
11
- *
12
- * Best effort and bounded: the turn waits at most `waitMs` and then runs on
13
- * whatever CLI is installed; an install still going finishes on its own, and a
14
- * failed one is not retried for a while, so a broken registry costs a turn
15
- * nothing past the first wait.
16
- */
17
- const execFileAsync = promisify(execFile);
18
- const CLI_PACKAGE = "@koda-sl/baker-cli";
19
- const VERSION = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;
20
- const WAIT_MS = 60_000;
21
- const READ_TIMEOUT_MS = 15_000;
22
- // Long enough for any real install; killing npm mid-install could leave no CLI at all.
23
- const INSTALL_TIMEOUT_MS = 300_000;
24
- const LATEST_TTL_MS = 5 * 60_000;
25
- const RETRY_AFTER_MS = 10 * 60_000;
26
- async function runCommand(command, args, timeoutMs) {
27
- const { stdout } = await execFileAsync(command, args, { timeout: timeoutMs });
28
- return stdout;
29
- }
30
- export function cliKeeper(options = {}) {
31
- const run = options.run ?? runCommand;
32
- const now = options.now ?? Date.now;
33
- const waitMs = options.waitMs ?? WAIT_MS;
34
- let installed;
35
- let latest;
36
- const failedAt = new Map();
37
- 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
- };
42
- const resolve = async (wanted) => {
43
- if (wanted !== "latest") {
44
- return VERSION.test(wanted) ? wanted : undefined;
45
- }
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() };
49
- }
50
- return latest?.version;
51
- };
52
- const sync = async (wanted) => {
53
- const target = await resolve(wanted);
54
- if (target === undefined) {
55
- return;
56
- }
57
- installed ??= await read("baker", ["--version"]);
58
- const failed = failedAt.get(target);
59
- if (installed === target || (failed !== undefined && now() - failed < RETRY_AFTER_MS)) {
60
- return;
61
- }
62
- try {
63
- await run("npm", ["install", "-g", `${CLI_PACKAGE}@${target}`], INSTALL_TIMEOUT_MS);
64
- }
65
- finally {
66
- installed = await read("baker", ["--version"]).catch(() => undefined);
67
- }
68
- if (installed !== target) {
69
- failedAt.set(target, now());
70
- }
71
- };
72
- 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
- let timer;
85
- const bound = new Promise((done) => {
86
- timer = setTimeout(done, waitMs);
87
- timer.unref?.();
88
- });
89
- await Promise.race([inFlight, bound]);
90
- clearTimeout(timer);
91
- };
92
- }
93
- //# sourceMappingURL=cli-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-sync.js","sourceRoot":"","sources":["../../src/hono/cli-sync.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli-sync.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-sync.test.d.ts","sourceRoot":"","sources":["../../src/hono/cli-sync.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from "vitest";
2
- import { cliKeeper } from "./cli-sync.js";
3
- function sandbox(installed, latest = "0.500.0") {
4
- return { installed, latest, installs: [] };
5
- }
6
- // The process boundary: `baker --version`, `npm view` and `npm install -g` as a Runtime answers them.
7
- function runIn(box) {
8
- return (command, args) => {
9
- if (command === "baker") {
10
- return Promise.resolve(`${box.installed}\n`);
11
- }
12
- if (args[0] === "view") {
13
- return Promise.resolve(`${box.latest}\n`);
14
- }
15
- const spec = args.at(-1) ?? "";
16
- box.installs.push(spec);
17
- if (box.failInstall) {
18
- return Promise.reject(new Error("npm ERR! 404 Not Found"));
19
- }
20
- box.installed = spec.replace("@koda-sl/baker-cli@", "");
21
- return Promise.resolve("");
22
- };
23
- }
24
- afterEach(() => {
25
- vi.useRealTimers();
26
- });
27
- describe("cliKeeper", () => {
28
- it("installs the release a turn names when the Runtime runs another", async () => {
29
- const box = sandbox("0.400.0");
30
- await cliKeeper({ run: runIn(box) })("0.412.0");
31
- expect(box.installs).toEqual(["@koda-sl/baker-cli@0.412.0"]);
32
- expect(box.installed).toBe("0.412.0");
33
- });
34
- it("leaves a CLI already on that release alone", async () => {
35
- const box = sandbox("0.412.0");
36
- await cliKeeper({ run: runIn(box) })("0.412.0");
37
- expect(box.installs).toEqual([]);
38
- });
39
- it("takes the registry's latest release where the deployment pins none", async () => {
40
- const box = sandbox("0.400.0", "0.501.0");
41
- await cliKeeper({ run: runIn(box) })("latest");
42
- expect(box.installs).toEqual(["@koda-sl/baker-cli@0.501.0"]);
43
- });
44
- it("keeps the old CLI and lets the turn run when the install fails, without retrying it every turn", async () => {
45
- const box = { ...sandbox("0.400.0"), failInstall: true };
46
- const keep = cliKeeper({ run: runIn(box) });
47
- await expect(keep("0.412.0")).resolves.toBeUndefined();
48
- await keep("0.412.0");
49
- expect(box.installed).toBe("0.400.0");
50
- expect(box.installs).toHaveLength(1);
51
- });
52
- it("refuses a release that is not a version", async () => {
53
- const box = sandbox("0.400.0");
54
- await cliKeeper({ run: runIn(box) })("0.412.0 && curl evil");
55
- expect(box.installs).toEqual([]);
56
- });
57
- it("holds the turn no longer than its bound while a slow install finishes on its own", async () => {
58
- vi.useFakeTimers();
59
- let finishInstall = () => undefined;
60
- const run = async (command) => {
61
- if (command === "baker") {
62
- return "0.400.0";
63
- }
64
- await new Promise((resolve) => {
65
- finishInstall = resolve;
66
- });
67
- return "";
68
- };
69
- let released = false;
70
- const turn = cliKeeper({ run, waitMs: 1_000 })("0.412.0").then(() => {
71
- released = true;
72
- });
73
- await vi.advanceTimersByTimeAsync(999);
74
- expect(released).toBe(false);
75
- await vi.advanceTimersByTimeAsync(1);
76
- await turn;
77
- expect(released).toBe(true);
78
- finishInstall();
79
- });
80
- });
81
- //# sourceMappingURL=cli-sync.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-sync.test.js","sourceRoot":"","sources":["../../src/hono/cli-sync.test.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export type MainSync = {
2
- /** Whether the workspace now holds main's version of `changed`, or only `origin/main` does. */
3
- inWorkspace: boolean;
4
- /** The files main changed since this thread was last told about main. */
5
- changed: readonly string[];
6
- };
7
- /**
8
- * 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.
12
- */
13
- export declare function catchUpWithMain(projectRoot: string, threadId: string, notify?: boolean): Promise<MainSync | undefined>;
14
- /**
15
- * What other chats published, beside the turn's message: the agent may still
16
- * hold the superseded version of these files from an earlier turn.
17
- */
18
- export declare function mainSyncReminder(sync: MainSync | undefined): string | undefined;
19
- //# sourceMappingURL=main-sync.d.ts.map
@@ -1 +0,0 @@
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,147 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { promisify } from "node:util";
3
- /**
4
- * Brings a chat's workspace level with what other chats published, before a
5
- * turn reads it, and tells each thread of the chat what changed since it last
6
- * looked.
7
- *
8
- * A Runtime clones main once, when it activates, and a chat commits nothing
9
- * until Publish, so another chat's Publish never reached this one: its agent
10
- * read and edited the superseded files until it noticed by eye and ran git
11
- * itself. So, before each turn, a chat branch that holds no work of its own
12
- * (nothing uncommitted, nothing committed past main) is fast-forwarded to main.
13
- * A branch with any work is never touched — Publish rebases it onto main — but
14
- * its thread is still told which files main changed.
15
- *
16
- * Best effort: a fetch that fails or stalls leaves the workspace as it was and
17
- * the turn runs, which is what happened before this existed.
18
- */
19
- const execFileAsync = promisify(execFile);
20
- const FETCH_TIMEOUT_MS = 20_000;
21
- const REMOTE_MAIN = "origin/main";
22
- const LOCAL_MAIN = "refs/heads/main";
23
- // The main each thread was last told about, kept out of `refs/heads` so no
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.
26
- const SEEN_REFS = "refs/baker/main-sync";
27
- async function git(projectRoot, args, timeout) {
28
- const { stdout } = await execFileAsync("git", args, { cwd: projectRoot, maxBuffer: 10 * 1024 * 1024, timeout });
29
- return stdout;
30
- }
31
- async function succeeds(projectRoot, args) {
32
- return await git(projectRoot, args).then(() => true, () => false);
33
- }
34
- async function revision(projectRoot, ref) {
35
- return await git(projectRoot, ["rev-parse", "--verify", "--quiet", `${ref}^{commit}`]).then((stdout) => stdout.trim() || undefined, () => undefined);
36
- }
37
- async function isClean(projectRoot) {
38
- return (await git(projectRoot, ["status", "--porcelain"])).trim() === "";
39
- }
40
- /**
41
- * Fast-forwards a branch with no work of its own to `origin/main`, moving the
42
- * local main with it. The tree is read clean right before either moves: another
43
- * thread of the Runtime may have written during the fetch.
44
- */
45
- async function fastForward(projectRoot) {
46
- if (!(await isClean(projectRoot))) {
47
- return;
48
- }
49
- // The change list (`chat-changes`) and the content diffs read a local main
50
- // before `origin/main`, so a local main left at the clone would list what
51
- // came in as this chat's own change. Moved first: the file watcher fires on
52
- // the merge, and must already see the new main when it does. Only ever
53
- // forward: a local main holding a commit `origin` lacks leaves it all alone.
54
- const onMain = (await git(projectRoot, ["branch", "--show-current"])).trim() === "main";
55
- const localMain = onMain ? undefined : await revision(projectRoot, LOCAL_MAIN);
56
- if (localMain !== undefined) {
57
- if (!(await succeeds(projectRoot, ["merge-base", "--is-ancestor", LOCAL_MAIN, REMOTE_MAIN]))) {
58
- return;
59
- }
60
- await git(projectRoot, ["update-ref", LOCAL_MAIN, REMOTE_MAIN]);
61
- }
62
- try {
63
- await git(projectRoot, ["merge", "--ff-only", "--quiet", REMOTE_MAIN]);
64
- }
65
- catch (error) {
66
- if (localMain !== undefined) {
67
- await git(projectRoot, ["update-ref", LOCAL_MAIN, localMain]);
68
- }
69
- throw error;
70
- }
71
- }
72
- /**
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.
77
- */
78
- export async function catchUpWithMain(projectRoot, threadId, notify = true) {
79
- try {
80
- await git(projectRoot, ["fetch", "--quiet", "origin", "main"], FETCH_TIMEOUT_MS);
81
- const baseRef = `${SEEN_REFS}/base`;
82
- if ((await revision(projectRoot, baseRef)) === undefined) {
83
- const base = (await git(projectRoot, ["merge-base", "HEAD", REMOTE_MAIN])).trim();
84
- await git(projectRoot, ["update-ref", baseRef, base]);
85
- }
86
- if (await succeeds(projectRoot, ["merge-base", "--is-ancestor", "HEAD", REMOTE_MAIN])) {
87
- await fastForward(projectRoot);
88
- }
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
- const main = await revision(projectRoot, REMOTE_MAIN);
92
- if (seen === undefined || main === undefined || seen === main) {
93
- return undefined;
94
- }
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
- }
101
- if (changed.length === 0) {
102
- return undefined;
103
- }
104
- return {
105
- inWorkspace: await succeeds(projectRoot, ["merge-base", "--is-ancestor", REMOTE_MAIN, "HEAD"]),
106
- changed,
107
- };
108
- }
109
- catch (error) {
110
- console.error("[main-sync] could not bring the workspace up to date with main", error);
111
- return undefined;
112
- }
113
- }
114
- const MAX_LISTED_PATHS = 20;
115
- /**
116
- * What other chats published, beside the turn's message: the agent may still
117
- * hold the superseded version of these files from an earlier turn.
118
- */
119
- export function mainSyncReminder(sync) {
120
- if (sync === undefined || sync.changed.length === 0) {
121
- return undefined;
122
- }
123
- // Strip newlines and `<` so a crafted file name can neither add instructions nor close the reminder.
124
- const listed = sync.changed
125
- .slice(0, MAX_LISTED_PATHS)
126
- .map((path) => `- ${path.replace(/[\r\n<]+/g, "").slice(0, 200)}`);
127
- const more = sync.changed.length > MAX_LISTED_PATHS ? [`- and ${sync.changed.length - MAX_LISTED_PATHS} more`] : [];
128
- // A fixed first line for each case: session review keys its hook ledger on it.
129
- const news = sync.inWorkspace
130
- ? [
131
- "Baker: this workspace was brought up to date with what other chats published since you last read it.",
132
- "These files changed. Read again any of them you work on; what you read before is out of date:",
133
- ]
134
- : [
135
- "Baker: other chats published changes since you last read these files. This chat holds work of its own, so its workspace still has the earlier version; Publish combines the two.",
136
- `Before you change one of them, read the published version with \`git show ${REMOTE_MAIN}:<path>\`:`,
137
- ];
138
- return [
139
- "<system-reminder>",
140
- ...news,
141
- ...listed,
142
- ...more,
143
- "This note comes from Baker, not from the user: reply in the language of the user's own message.",
144
- "</system-reminder>",
145
- ].join("\n");
146
- }
147
- //# sourceMappingURL=main-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-sync.js","sourceRoot":"","sources":["../../src/hono/main-sync.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=main-sync.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-sync.test.d.ts","sourceRoot":"","sources":["../../src/hono/main-sync.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { chmod, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { dirname, join } from "node:path";
5
- import { promisify } from "node:util";
6
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
7
- import { catchUpWithMain, mainSyncReminder } from "./main-sync.js";
8
- const execFileAsync = promisify(execFile);
9
- let root;
10
- let publisher;
11
- let workspace;
12
- async function git(cwd, ...args) {
13
- const { stdout } = await execFileAsync("git", ["-c", "user.email=t@example.com", "-c", "user.name=T", ...args], {
14
- cwd,
15
- });
16
- return stdout.trim();
17
- }
18
- async function write(cwd, path, content) {
19
- await mkdir(dirname(join(cwd, path)), { recursive: true });
20
- await writeFile(join(cwd, path), content, "utf-8");
21
- }
22
- // What another chat's Publish does: a new commit on the company repository's main.
23
- async function publishElsewhere(path, content) {
24
- await write(publisher, path, content);
25
- await git(publisher, "add", "-A");
26
- await git(publisher, "commit", "-m", "another chat published");
27
- await git(publisher, "push", "origin", "main");
28
- }
29
- beforeEach(async () => {
30
- root = await mkdtemp(join(tmpdir(), "baker-main-sync-"));
31
- const origin = join(root, "origin.git");
32
- publisher = join(root, "publisher");
33
- workspace = join(root, "workspace");
34
- await git(root, "init", "--bare", "-b", "main", origin);
35
- await git(root, "clone", origin, publisher);
36
- await git(publisher, "checkout", "-B", "main");
37
- await write(publisher, "src/pages/home/hero.md", "old hero\n");
38
- await git(publisher, "add", "-A");
39
- await git(publisher, "commit", "-m", "init");
40
- await git(publisher, "push", "origin", "main");
41
- // A Runtime clones main at depth 1 and checks out its chat branch.
42
- await git(root, "clone", "--depth", "1", `file://${origin}`, workspace);
43
- await git(workspace, "checkout", "-B", "chat/abc");
44
- });
45
- afterEach(async () => {
46
- await rm(root, { recursive: true, force: true });
47
- });
48
- describe("catchUpWithMain", () => {
49
- it("fast-forwards a chat branch with no work of its own to what another chat published", async () => {
50
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
51
- const sync = await catchUpWithMain(workspace, "thread_a");
52
- expect(sync).toEqual({ inWorkspace: true, changed: ["src/pages/home/hero.md"] });
53
- expect(await readFile(join(workspace, "src/pages/home/hero.md"), "utf-8")).toBe("new hero\n");
54
- expect(await git(workspace, "branch", "--show-current")).toBe("chat/abc");
55
- });
56
- it("moves the local main too, so what came in is never listed as this chat's change", async () => {
57
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
58
- await catchUpWithMain(workspace, "thread_a");
59
- // The dashboard's change list diffs against the local `main` when one exists.
60
- expect(await git(workspace, "diff", "--name-only", "main...HEAD")).toBe("");
61
- });
62
- it("never touches a chat branch with uncommitted work, but names what main changed", async () => {
63
- await write(workspace, "src/pages/pricing/index.md", "draft\n");
64
- const before = await git(workspace, "rev-parse", "HEAD");
65
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
66
- expect(await catchUpWithMain(workspace, "thread_a")).toEqual({
67
- inWorkspace: false,
68
- changed: ["src/pages/home/hero.md"],
69
- });
70
- expect(await git(workspace, "rev-parse", "HEAD")).toBe(before);
71
- expect(await readFile(join(workspace, "src/pages/home/hero.md"), "utf-8")).toBe("old hero\n");
72
- });
73
- it("leaves a chat branch with commits of its own for Publish to rebase, but names what main changed", async () => {
74
- await write(workspace, "src/pages/pricing/index.md", "mine\n");
75
- await git(workspace, "add", "-A");
76
- await git(workspace, "commit", "-m", "chat work");
77
- const before = await git(workspace, "rev-parse", "HEAD");
78
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
79
- expect(await catchUpWithMain(workspace, "thread_a")).toEqual({
80
- inWorkspace: false,
81
- changed: ["src/pages/home/hero.md"],
82
- });
83
- expect(await git(workspace, "rev-parse", "HEAD")).toBe(before);
84
- });
85
- it("leaves the workspace alone when another thread writes while main is being fetched", async () => {
86
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
87
- const before = await git(workspace, "rev-parse", "HEAD");
88
- const beforeMain = await git(workspace, "rev-parse", "main");
89
- // Another thread of the Runtime writes a file the moment the fetch lands.
90
- const hook = join(workspace, ".git", "hooks", "reference-transaction");
91
- await writeFile(hook, `#!/bin/sh\nif [ "$1" = committed ] && grep -q refs/remotes/origin/main; then echo draft > "${join(workspace, "draft.md")}"; fi\n`, "utf-8");
92
- await chmod(hook, 0o755);
93
- const sync = await catchUpWithMain(workspace, "thread_a");
94
- expect(sync?.inWorkspace).toBe(false);
95
- expect(await git(workspace, "rev-parse", "HEAD")).toBe(before);
96
- expect(await git(workspace, "rev-parse", "main")).toBe(beforeMain);
97
- expect(await readFile(join(workspace, "src/pages/home/hero.md"), "utf-8")).toBe("old hero\n");
98
- });
99
- it("tells every thread of the chat what changed, not only the first to catch up", async () => {
100
- await publishElsewhere("src/pages/home/hero.md", "new hero\n");
101
- await catchUpWithMain(workspace, "thread_a");
102
- expect(await catchUpWithMain(workspace, "thread_b")).toEqual({
103
- inWorkspace: true,
104
- changed: ["src/pages/home/hero.md"],
105
- });
106
- expect(await catchUpWithMain(workspace, "thread_a")).toBeUndefined();
107
- });
108
- it("keeps the news for the thread's next turn when this one cannot carry it", async () => {
109
- 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({
112
- inWorkspace: true,
113
- changed: ["src/pages/home/hero.md"],
114
- });
115
- });
116
- });
117
- describe("mainSyncReminder", () => {
118
- it("points a chat holding work of its own at the published version instead of its stale copy", () => {
119
- const reminder = mainSyncReminder({ inWorkspace: false, changed: ["src/pages/home/hero.md"] });
120
- expect(reminder).toContain("git show origin/main:<path>");
121
- expect(reminder).toContain("- src/pages/home/hero.md");
122
- });
123
- });
124
- //# sourceMappingURL=main-sync.test.js.map