@lichen-ai/lichen-sdk 0.1.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.
Files changed (122) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auth/error.d.ts +9 -0
  3. package/dist/auth/error.js +76 -0
  4. package/dist/auth/error.js.map +1 -0
  5. package/dist/auth/error.mjs +76 -0
  6. package/dist/auth/error.mjs.map +1 -0
  7. package/dist/auth/index.d.ts +18 -0
  8. package/dist/auth/index.js +35 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/index.mjs +35 -0
  11. package/dist/auth/index.mjs.map +1 -0
  12. package/dist/auth/types.d.ts +297 -0
  13. package/dist/auth/types.js +2 -0
  14. package/dist/auth/types.js.map +1 -0
  15. package/dist/auth/types.mjs +2 -0
  16. package/dist/auth/types.mjs.map +1 -0
  17. package/dist/client.d.ts +773 -0
  18. package/dist/client.js +1544 -0
  19. package/dist/client.js.map +1 -0
  20. package/dist/client.mjs +1544 -0
  21. package/dist/client.mjs.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/index.mjs +3 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/logging/index.d.ts +43 -0
  28. package/dist/logging/index.js +33 -0
  29. package/dist/logging/index.js.map +1 -0
  30. package/dist/logging/index.mjs +33 -0
  31. package/dist/logging/index.mjs.map +1 -0
  32. package/dist/schema.d.ts +661 -0
  33. package/dist/schema.js +30 -0
  34. package/dist/schema.js.map +1 -0
  35. package/dist/schema.mjs +30 -0
  36. package/dist/schema.mjs.map +1 -0
  37. package/dist/singletons/fetch.d.ts +7 -0
  38. package/dist/singletons/fetch.js +24 -0
  39. package/dist/singletons/fetch.js.map +1 -0
  40. package/dist/singletons/fetch.mjs +24 -0
  41. package/dist/singletons/fetch.mjs.map +1 -0
  42. package/dist/tests/fetch.test.d.ts +1 -0
  43. package/dist/tests/fetch.test.js +460 -0
  44. package/dist/tests/fetch.test.js.map +1 -0
  45. package/dist/tests/fetch.test.mjs +460 -0
  46. package/dist/tests/fetch.test.mjs.map +1 -0
  47. package/dist/tests/sse.test.d.ts +1 -0
  48. package/dist/tests/sse.test.js +132 -0
  49. package/dist/tests/sse.test.js.map +1 -0
  50. package/dist/tests/sse.test.mjs +132 -0
  51. package/dist/tests/sse.test.mjs.map +1 -0
  52. package/dist/types.d.ts +178 -0
  53. package/dist/types.js +2 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/types.messages.d.ts +86 -0
  56. package/dist/types.messages.js +2 -0
  57. package/dist/types.messages.js.map +1 -0
  58. package/dist/types.messages.mjs +2 -0
  59. package/dist/types.messages.mjs.map +1 -0
  60. package/dist/types.mjs +2 -0
  61. package/dist/types.mjs.map +1 -0
  62. package/dist/types.stream.d.ts +212 -0
  63. package/dist/types.stream.js +2 -0
  64. package/dist/types.stream.js.map +1 -0
  65. package/dist/types.stream.mjs +2 -0
  66. package/dist/types.stream.mjs.map +1 -0
  67. package/dist/ui/branching.d.ts +35 -0
  68. package/dist/ui/branching.js +143 -0
  69. package/dist/ui/branching.js.map +1 -0
  70. package/dist/ui/branching.mjs +143 -0
  71. package/dist/ui/branching.mjs.map +1 -0
  72. package/dist/ui/branching.test.d.ts +1 -0
  73. package/dist/ui/branching.test.js +369 -0
  74. package/dist/ui/branching.test.js.map +1 -0
  75. package/dist/ui/branching.test.mjs +369 -0
  76. package/dist/ui/branching.test.mjs.map +1 -0
  77. package/dist/ui/errors.d.ts +12 -0
  78. package/dist/ui/errors.js +10 -0
  79. package/dist/ui/errors.js.map +1 -0
  80. package/dist/ui/errors.mjs +10 -0
  81. package/dist/ui/errors.mjs.map +1 -0
  82. package/dist/ui/manager.d.ts +87 -0
  83. package/dist/ui/manager.js +158 -0
  84. package/dist/ui/manager.js.map +1 -0
  85. package/dist/ui/manager.mjs +158 -0
  86. package/dist/ui/manager.mjs.map +1 -0
  87. package/dist/ui/messages.d.ts +18 -0
  88. package/dist/ui/messages.js +64 -0
  89. package/dist/ui/messages.js.map +1 -0
  90. package/dist/ui/messages.mjs +64 -0
  91. package/dist/ui/messages.mjs.map +1 -0
  92. package/dist/ui/utils.d.ts +2 -0
  93. package/dist/ui/utils.js +11 -0
  94. package/dist/ui/utils.js.map +1 -0
  95. package/dist/ui/utils.mjs +11 -0
  96. package/dist/ui/utils.mjs.map +1 -0
  97. package/dist/utils/async_caller.d.ts +48 -0
  98. package/dist/utils/async_caller.js +153 -0
  99. package/dist/utils/async_caller.js.map +1 -0
  100. package/dist/utils/async_caller.mjs +153 -0
  101. package/dist/utils/async_caller.mjs.map +1 -0
  102. package/dist/utils/env.d.ts +1 -0
  103. package/dist/utils/env.js +13 -0
  104. package/dist/utils/env.js.map +1 -0
  105. package/dist/utils/env.mjs +13 -0
  106. package/dist/utils/env.mjs.map +1 -0
  107. package/dist/utils/signals.d.ts +1 -0
  108. package/dist/utils/signals.js +19 -0
  109. package/dist/utils/signals.js.map +1 -0
  110. package/dist/utils/signals.mjs +19 -0
  111. package/dist/utils/signals.mjs.map +1 -0
  112. package/dist/utils/sse.d.ts +8 -0
  113. package/dist/utils/sse.js +151 -0
  114. package/dist/utils/sse.js.map +1 -0
  115. package/dist/utils/sse.mjs +151 -0
  116. package/dist/utils/sse.mjs.map +1 -0
  117. package/dist/utils/stream.d.ts +13 -0
  118. package/dist/utils/stream.js +109 -0
  119. package/dist/utils/stream.js.map +1 -0
  120. package/dist/utils/stream.mjs +109 -0
  121. package/dist/utils/stream.mjs.map +1 -0
  122. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/ui/manager.ts"],"names":[],"mappings":"OAaO,EAAuB,aAAa,EAAE;OACtC,EAAE,WAAW,EAAE;AAyEtB,MAAM,OAAO,aAAa;IAChB,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;IAEhC,QAAQ,CAAqB;IAE7B,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IAEjC,KAAK,CAIZ;IAED,YAAY,QAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACnE,CAAC;IAEO,QAAQ,GAAG,CAAC,QAAoC,EAAE,EAAE;QAC1D,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC,CAAA;IAEO,eAAe,GAAG,GAAG,EAAE;QAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,SAAS,GAAG,CAAC,QAAoB,EAAgB,EAAE;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC,CAAA;IAED,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAA;IAE9B,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACvC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;IAED,eAAe,GAAG,CAChB,MAAoG,EACpG,OAA0B,QAAQ,EAClC,EAAE;QACF,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACpE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAA4C,EAAE,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAA;IAEO,WAAW,GAAG,CAAC,IAAuB,EAAE,aAAwB,EAAE,EAAE;QAC1E,OAAO,CAAC,MAAsE,EAAE,EAAE;YAChF,MAAM,IAAI,GAAG;gBACX,GAAG,aAAa;gBAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C,CAAA;YACD,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACjE,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;QAClD,CAAC,CAAA;IACH,CAAC,CAAA;IAEO,cAAc,GAAG,CAGvB,QAAW,EACX,MAAoG,EACpG,KAAkG,EACK,EAAE;QACzG,OAAO,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAA;IACjE,CAAC,CAAA;IAED,KAAK,GAAG,KAAK,EACX,MAEiH,EACjH,OAcC,EACc,EAAE;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAM;QAEhC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;YAErC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAE9C,IAAI,WAAoC,CAAA;YACxC,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;gBACxC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACtB,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;oBACnC,MAAK;gBACP,CAAC;gBAED,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE7E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;gBAEhE,IAAI,KAAK,KAAK,UAAU;oBAAE,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAA;gBACnE,IAAI,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAA;gBAElE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;gBAChE,CAAC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC/C,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;gBAChE,CAAC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBACpD,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC5D,CAAC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBACtD,CAAC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBACvD,CAAC;gBAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvB,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;wBAC5B,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;oBACxD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;oBAC5B,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;oBACjD,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;oBAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;oBACzD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;wBACrE,SAAQ;oBACV,CAAC;oBAED,IAAI,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE,EAAE;wBACpC,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,YAAY,EAAE,CAAA;wBAE5D,8CAA8C;wBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;wBACpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;wBAE5E,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI;4BAAE,OAAO,MAAM,CAAA;wBAC1C,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;4BACjC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;wBAC3B,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;wBACxC,CAAC;wBAED,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;oBAC9C,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,WAAW,IAAI,IAAI;gBAAE,MAAM,WAAW,CAAA;YAE1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,CAAA;YAC1C,IAAI,OAAO,MAAM,KAAK,WAAW;gBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,CAAC,CACC,KAAK,YAAY,KAAK,IAAI,kDAAkD;gBAC5E,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAC/D,EACD,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBACpB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACxB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;YACrC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,IAAI,GAAG,KAAK,EACV,aAAwB,EACxB,OAIC,EACc,EAAE;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;QAErC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACX,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;QAErC,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjD,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC,CAAA;CACF"}
@@ -0,0 +1,158 @@
1
+ import { toMessageDict } from "./messages.mjs";
2
+ import { StreamError } from "./errors.mjs";
3
+ export class StreamManager {
4
+ abortRef = new AbortController();
5
+ messages;
6
+ listeners = new Set();
7
+ state;
8
+ constructor(messages) {
9
+ this.messages = messages;
10
+ this.state = { isLoading: false, values: null, error: undefined };
11
+ }
12
+ setState = (newState) => {
13
+ this.state = { ...this.state, ...newState };
14
+ this.notifyListeners();
15
+ };
16
+ notifyListeners = () => {
17
+ this.listeners.forEach((listener) => listener());
18
+ };
19
+ subscribe = (listener) => {
20
+ this.listeners.add(listener);
21
+ return () => this.listeners.delete(listener);
22
+ };
23
+ getSnapshot = () => this.state;
24
+ get isLoading() {
25
+ return this.state.isLoading;
26
+ }
27
+ get values() {
28
+ return this.state.values?.[0] ?? null;
29
+ }
30
+ get error() {
31
+ return this.state.error;
32
+ }
33
+ setStreamValues = (values, kind = 'stream') => {
34
+ if (typeof values === 'function') {
35
+ const [prevValues, prevKind] = this.state.values ?? [null, 'stream'];
36
+ const nextValues = values(prevValues, prevKind);
37
+ this.setState({ values: nextValues != null ? [nextValues, kind] : null });
38
+ }
39
+ else {
40
+ const nextValues = values != null ? [values, kind] : null;
41
+ this.setState({ values: nextValues });
42
+ }
43
+ };
44
+ getMutateFn = (kind, historyValues) => {
45
+ return (update) => {
46
+ const prev = {
47
+ ...historyValues,
48
+ ...(this.state.values ?? [null, 'stream'])[0]
49
+ };
50
+ const next = typeof update === 'function' ? update(prev) : update;
51
+ this.setStreamValues({ ...prev, ...next }, kind);
52
+ };
53
+ };
54
+ matchEventType = (expected, actual, _data) => {
55
+ return expected === actual || actual.startsWith(`${expected}|`);
56
+ };
57
+ start = async (action, options) => {
58
+ if (this.state.isLoading)
59
+ return;
60
+ try {
61
+ this.setState({ isLoading: true, error: undefined });
62
+ this.abortRef = new AbortController();
63
+ const run = await action(this.abortRef.signal);
64
+ let streamError;
65
+ for await (const { event, data } of run) {
66
+ if (event === 'error') {
67
+ streamError = new StreamError(data);
68
+ break;
69
+ }
70
+ const namespace = event.includes('|') ? event.split('|').slice(1) : undefined;
71
+ const mutate = this.getMutateFn('stream', options.initialValues);
72
+ if (event === 'metadata')
73
+ options.callbacks.onMetadataEvent?.(data);
74
+ if (event === 'events')
75
+ options.callbacks.onLangChainEvent?.(data);
76
+ if (this.matchEventType('updates', event, data)) {
77
+ options.callbacks.onUpdateEvent?.(data, { namespace, mutate });
78
+ }
79
+ if (this.matchEventType('custom', event, data)) {
80
+ options.callbacks.onCustomEvent?.(data, { namespace, mutate });
81
+ }
82
+ if (this.matchEventType('checkpoints', event, data)) {
83
+ options.callbacks.onCheckpointEvent?.(data, { namespace });
84
+ }
85
+ if (this.matchEventType('tasks', event, data)) {
86
+ options.callbacks.onTaskEvent?.(data, { namespace });
87
+ }
88
+ if (this.matchEventType('debug', event, data)) {
89
+ options.callbacks.onDebugEvent?.(data, { namespace });
90
+ }
91
+ if (event === 'values') {
92
+ if ('__interrupt__' in data) {
93
+ this.setStreamValues((prev) => ({ ...prev, ...data }));
94
+ }
95
+ else {
96
+ this.setStreamValues(data);
97
+ }
98
+ }
99
+ if (this.matchEventType('messages', event, data)) {
100
+ const [serialized, metadata] = data;
101
+ const messageId = this.messages.add(serialized, metadata);
102
+ if (!messageId) {
103
+ console.warn('Failed to add message to manager, no message ID found');
104
+ continue;
105
+ }
106
+ this.setStreamValues((streamValues) => {
107
+ const values = { ...options.initialValues, ...streamValues };
108
+ // Assumption: we're concatenating the message
109
+ const messages = options.getMessages(values).slice();
110
+ const { chunk, index } = this.messages.get(messageId, messages.length) ?? {};
111
+ if (!chunk || index == null)
112
+ return values;
113
+ if (chunk.getType() === 'remove') {
114
+ messages.splice(index, 1);
115
+ }
116
+ else {
117
+ messages[index] = toMessageDict(chunk);
118
+ }
119
+ return options.setMessages(values, messages);
120
+ });
121
+ }
122
+ }
123
+ if (streamError != null)
124
+ throw streamError;
125
+ const values = await options.onSuccess?.();
126
+ if (typeof values !== 'undefined')
127
+ this.setStreamValues(values);
128
+ }
129
+ catch (error) {
130
+ if (!(error instanceof Error && // eslint-disable-line no-instanceof/no-instanceof
131
+ (error.name === 'AbortError' || error.name === 'TimeoutError'))) {
132
+ console.error(error);
133
+ this.setState({ error });
134
+ await options.onError?.(error);
135
+ }
136
+ }
137
+ finally {
138
+ this.setState({ isLoading: false });
139
+ this.abortRef = new AbortController();
140
+ options.onFinish?.();
141
+ }
142
+ };
143
+ stop = async (historyValues, options) => {
144
+ this.abortRef.abort();
145
+ this.abortRef = new AbortController();
146
+ options.onStop?.({ mutate: this.getMutateFn('stop', historyValues) });
147
+ };
148
+ clear = () => {
149
+ // Cancel any running streams
150
+ this.abortRef.abort();
151
+ this.abortRef = new AbortController();
152
+ // Set the stream state to null
153
+ this.setState({ error: undefined, values: null });
154
+ // Clear any pending messages
155
+ this.messages.clear();
156
+ };
157
+ }
158
+ //# sourceMappingURL=manager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.mjs","sourceRoot":"","sources":["../../src/ui/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type BaseMessage, type BaseMessageChunk } from '@langchain/core/messages';
2
+ import type { Message } from '../types.messages.js';
3
+ export declare class MessageTupleManager {
4
+ chunks: Record<string, {
5
+ chunk?: BaseMessageChunk | BaseMessage;
6
+ metadata?: Record<string, unknown>;
7
+ index?: number;
8
+ }>;
9
+ constructor();
10
+ add(serialized: Message, metadata: Record<string, unknown> | undefined): string | null;
11
+ clear(): void;
12
+ get(id: string | null | undefined, defaultIndex?: number): {
13
+ chunk?: BaseMessageChunk | BaseMessage;
14
+ metadata?: Record<string, unknown>;
15
+ index?: number;
16
+ } | null;
17
+ }
18
+ export declare const toMessageDict: (chunk: BaseMessage) => Message;
@@ -0,0 +1,64 @@
1
+ import { RemoveMessage, convertToChunk, coerceMessageLikeToMessage, isBaseMessageChunk } from '@langchain/core/messages';
2
+ function tryConvertToChunk(message) {
3
+ try {
4
+ return convertToChunk(message);
5
+ }
6
+ catch {
7
+ return null;
8
+ }
9
+ }
10
+ function tryCoerceMessageLikeToMessage(message) {
11
+ // TODO: this is unnecessary with https://github.com/langchain-ai/langchainjs/pull/8941
12
+ if (message.type === 'remove' && message.id != null) {
13
+ return new RemoveMessage({ ...message, id: message.id });
14
+ }
15
+ return coerceMessageLikeToMessage(message);
16
+ }
17
+ export class MessageTupleManager {
18
+ chunks = {};
19
+ constructor() {
20
+ this.chunks = {};
21
+ }
22
+ add(serialized, metadata) {
23
+ // TODO: this is sometimes sent from the API
24
+ // figure out how to prevent this or move this to LC.js
25
+ if (serialized.type.endsWith('MessageChunk')) {
26
+ // eslint-disable-next-line no-param-reassign
27
+ serialized.type = serialized.type.slice(0, -'MessageChunk'.length).toLowerCase();
28
+ }
29
+ const message = tryCoerceMessageLikeToMessage(serialized);
30
+ const chunk = tryConvertToChunk(message);
31
+ const { id } = chunk ?? message;
32
+ if (!id) {
33
+ console.warn('No message ID found for chunk, ignoring in state', serialized);
34
+ return null;
35
+ }
36
+ this.chunks[id] ??= {};
37
+ this.chunks[id].metadata = metadata ?? this.chunks[id].metadata;
38
+ if (chunk) {
39
+ const prev = this.chunks[id].chunk;
40
+ this.chunks[id].chunk = (isBaseMessageChunk(prev) ? prev : null)?.concat(chunk) ?? chunk;
41
+ }
42
+ else {
43
+ this.chunks[id].chunk = message;
44
+ }
45
+ return id;
46
+ }
47
+ clear() {
48
+ this.chunks = {};
49
+ }
50
+ get(id, defaultIndex) {
51
+ if (id == null)
52
+ return null;
53
+ if (this.chunks[id] == null)
54
+ return null;
55
+ if (defaultIndex != null)
56
+ this.chunks[id].index ??= defaultIndex;
57
+ return this.chunks[id];
58
+ }
59
+ }
60
+ export const toMessageDict = (chunk) => {
61
+ const { type, data } = chunk.toDict();
62
+ return { ...data, type };
63
+ };
64
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/ui/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { RemoveMessage, convertToChunk, coerceMessageLikeToMessage, isBaseMessageChunk } from '@langchain/core/messages';
2
+ function tryConvertToChunk(message) {
3
+ try {
4
+ return convertToChunk(message);
5
+ }
6
+ catch {
7
+ return null;
8
+ }
9
+ }
10
+ function tryCoerceMessageLikeToMessage(message) {
11
+ // TODO: this is unnecessary with https://github.com/langchain-ai/langchainjs/pull/8941
12
+ if (message.type === 'remove' && message.id != null) {
13
+ return new RemoveMessage({ ...message, id: message.id });
14
+ }
15
+ return coerceMessageLikeToMessage(message);
16
+ }
17
+ export class MessageTupleManager {
18
+ chunks = {};
19
+ constructor() {
20
+ this.chunks = {};
21
+ }
22
+ add(serialized, metadata) {
23
+ // TODO: this is sometimes sent from the API
24
+ // figure out how to prevent this or move this to LC.js
25
+ if (serialized.type.endsWith('MessageChunk')) {
26
+ // eslint-disable-next-line no-param-reassign
27
+ serialized.type = serialized.type.slice(0, -'MessageChunk'.length).toLowerCase();
28
+ }
29
+ const message = tryCoerceMessageLikeToMessage(serialized);
30
+ const chunk = tryConvertToChunk(message);
31
+ const { id } = chunk ?? message;
32
+ if (!id) {
33
+ console.warn('No message ID found for chunk, ignoring in state', serialized);
34
+ return null;
35
+ }
36
+ this.chunks[id] ??= {};
37
+ this.chunks[id].metadata = metadata ?? this.chunks[id].metadata;
38
+ if (chunk) {
39
+ const prev = this.chunks[id].chunk;
40
+ this.chunks[id].chunk = (isBaseMessageChunk(prev) ? prev : null)?.concat(chunk) ?? chunk;
41
+ }
42
+ else {
43
+ this.chunks[id].chunk = message;
44
+ }
45
+ return id;
46
+ }
47
+ clear() {
48
+ this.chunks = {};
49
+ }
50
+ get(id, defaultIndex) {
51
+ if (id == null)
52
+ return null;
53
+ if (this.chunks[id] == null)
54
+ return null;
55
+ if (defaultIndex != null)
56
+ this.chunks[id].index ??= defaultIndex;
57
+ return this.chunks[id];
58
+ }
59
+ }
60
+ export const toMessageDict = (chunk) => {
61
+ const { type, data } = chunk.toDict();
62
+ return { ...data, type };
63
+ };
64
+ //# sourceMappingURL=messages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../src/ui/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function unique<T>(array: T[]): T[];
2
+ export declare function findLast<T>(array: T[], predicate: (item: T) => boolean): T | undefined;
@@ -0,0 +1,11 @@
1
+ export function unique(array) {
2
+ return [...new Set(array)];
3
+ }
4
+ export function findLast(array, predicate) {
5
+ for (let i = array.length - 1; i >= 0; i -= 1) {
6
+ if (predicate(array[i]))
7
+ return array[i];
8
+ }
9
+ return undefined;
10
+ }
11
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ui/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAI,KAAU;IAClC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAQ,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,SAA+B;IACrE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export function unique(array) {
2
+ return [...new Set(array)];
3
+ }
4
+ export function findLast(array, predicate) {
5
+ for (let i = array.length - 1; i >= 0; i -= 1) {
6
+ if (predicate(array[i]))
7
+ return array[i];
8
+ }
9
+ return undefined;
10
+ }
11
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../../src/ui/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAI,KAAU;IAClC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAQ,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,SAA+B;IACrE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,48 @@
1
+ type ResponseCallback = (response?: Response) => Promise<boolean>;
2
+ export interface AsyncCallerParams {
3
+ /**
4
+ * The maximum number of concurrent calls that can be made.
5
+ * Defaults to `Infinity`, which means no limit.
6
+ */
7
+ maxConcurrency?: number;
8
+ /**
9
+ * The maximum number of retries that can be made for a single call,
10
+ * with an exponential backoff between each attempt. Defaults to 6.
11
+ */
12
+ maxRetries?: number;
13
+ onFailedResponseHook?: ResponseCallback;
14
+ /**
15
+ * Specify a custom fetch implementation.
16
+ *
17
+ * By default we expect the `fetch` is available in the global scope.
18
+ */
19
+ fetch?: typeof fetch;
20
+ }
21
+ export interface AsyncCallerCallOptions {
22
+ signal?: AbortSignal;
23
+ }
24
+ /**
25
+ * A class that can be used to make async calls with concurrency and retry logic.
26
+ *
27
+ * This is useful for making calls to any kind of "expensive" external resource,
28
+ * be it because it's rate-limited, subject to network issues, etc.
29
+ *
30
+ * Concurrent calls are limited by the `maxConcurrency` parameter, which defaults
31
+ * to `Infinity`. This means that by default, all calls will be made in parallel.
32
+ *
33
+ * Retries are limited by the `maxRetries` parameter, which defaults to 5. This
34
+ * means that by default, each call will be retried up to 5 times, with an
35
+ * exponential backoff between each attempt.
36
+ */
37
+ export declare class AsyncCaller {
38
+ protected maxConcurrency: AsyncCallerParams['maxConcurrency'];
39
+ protected maxRetries: AsyncCallerParams['maxRetries'];
40
+ private queue;
41
+ private onFailedResponseHook?;
42
+ private customFetch?;
43
+ constructor(params: AsyncCallerParams);
44
+ call<TArgs extends unknown[], TResult>(callable: (...args: TArgs) => Promise<TResult>, ...args: TArgs): Promise<TResult>;
45
+ callWithOptions<TArgs extends unknown[], TResult>(options: AsyncCallerCallOptions, callable: (...args: TArgs) => Promise<TResult>, ...args: TArgs): Promise<TResult>;
46
+ fetch(...args: Parameters<typeof fetch>): ReturnType<typeof fetch>;
47
+ }
48
+ export {};
@@ -0,0 +1,153 @@
1
+ import pRetry from 'p-retry';
2
+ import * as PQueueModule from 'p-queue';
3
+ import { _getFetchImplementation } from "../singletons/fetch.js";
4
+ const STATUS_NO_RETRY = [
5
+ 400, // Bad Request
6
+ 401, // Unauthorized
7
+ 402, // Payment required
8
+ 403, // Forbidden
9
+ 404, // Not Found
10
+ 405, // Method Not Allowed
11
+ 406, // Not Acceptable
12
+ 407, // Proxy Authentication Required
13
+ 408, // Request Timeout
14
+ 409, // Conflict
15
+ 422 // Unprocessable Entity
16
+ ];
17
+ function isQueueConstructor(value) {
18
+ return typeof value === 'function';
19
+ }
20
+ function resolveQueueConstructor() {
21
+ const moduleValue = PQueueModule;
22
+ if (isQueueConstructor(moduleValue))
23
+ return moduleValue;
24
+ if (moduleValue && typeof moduleValue === 'object' && 'default' in moduleValue) {
25
+ const defaultExport = moduleValue.default;
26
+ if (isQueueConstructor(defaultExport))
27
+ return defaultExport;
28
+ }
29
+ throw new Error('p-queue did not expose a queue constructor');
30
+ }
31
+ /**
32
+ * Do not rely on globalThis.Response, rather just
33
+ * do duck typing
34
+ */
35
+ function isResponse(x) {
36
+ if (x == null || typeof x !== 'object')
37
+ return false;
38
+ return 'status' in x && 'statusText' in x && 'text' in x;
39
+ }
40
+ function hasErrorCode(value, code) {
41
+ return Boolean(value && typeof value === 'object' && 'code' in value && value.code === code);
42
+ }
43
+ /**
44
+ * Utility error to properly handle failed requests
45
+ */
46
+ class HTTPError extends Error {
47
+ status;
48
+ text;
49
+ response;
50
+ constructor(status, message, response) {
51
+ super(`HTTP ${status}: ${message}`);
52
+ this.status = status;
53
+ this.text = message;
54
+ this.response = response;
55
+ }
56
+ static async fromResponse(response, options) {
57
+ try {
58
+ return new HTTPError(response.status, await response.text(), options?.includeResponse ? response : undefined);
59
+ }
60
+ catch {
61
+ return new HTTPError(response.status, response.statusText, options?.includeResponse ? response : undefined);
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * A class that can be used to make async calls with concurrency and retry logic.
67
+ *
68
+ * This is useful for making calls to any kind of "expensive" external resource,
69
+ * be it because it's rate-limited, subject to network issues, etc.
70
+ *
71
+ * Concurrent calls are limited by the `maxConcurrency` parameter, which defaults
72
+ * to `Infinity`. This means that by default, all calls will be made in parallel.
73
+ *
74
+ * Retries are limited by the `maxRetries` parameter, which defaults to 5. This
75
+ * means that by default, each call will be retried up to 5 times, with an
76
+ * exponential backoff between each attempt.
77
+ */
78
+ export class AsyncCaller {
79
+ maxConcurrency;
80
+ maxRetries;
81
+ queue;
82
+ onFailedResponseHook;
83
+ customFetch;
84
+ constructor(params) {
85
+ this.maxConcurrency = params.maxConcurrency ?? Infinity;
86
+ this.maxRetries = params.maxRetries ?? 4;
87
+ const Queue = resolveQueueConstructor();
88
+ this.queue = new Queue({ concurrency: this.maxConcurrency });
89
+ this.onFailedResponseHook = params?.onFailedResponseHook;
90
+ this.customFetch = params.fetch;
91
+ }
92
+ call(callable, ...args) {
93
+ const { onFailedResponseHook } = this;
94
+ return this.queue.add(() => pRetry(() => callable(...args).catch(async (error) => {
95
+ // eslint-disable-next-line no-instanceof/no-instanceof
96
+ if (error instanceof Error) {
97
+ throw error;
98
+ }
99
+ else if (isResponse(error)) {
100
+ throw await HTTPError.fromResponse(error, {
101
+ includeResponse: !!onFailedResponseHook
102
+ });
103
+ }
104
+ else {
105
+ throw new Error(typeof error === 'string' ? error : 'Unknown async caller failure');
106
+ }
107
+ }), {
108
+ async onFailedAttempt(error) {
109
+ if (error.message.startsWith('Cancel') ||
110
+ error.message.startsWith('TimeoutError') ||
111
+ error.message.startsWith('AbortError')) {
112
+ throw error;
113
+ }
114
+ if (hasErrorCode(error, 'ECONNABORTED')) {
115
+ throw error;
116
+ }
117
+ // eslint-disable-next-line no-instanceof/no-instanceof
118
+ if (error instanceof HTTPError) {
119
+ if (STATUS_NO_RETRY.includes(error.status)) {
120
+ throw error;
121
+ }
122
+ if (onFailedResponseHook && error.response) {
123
+ await onFailedResponseHook(error.response);
124
+ }
125
+ }
126
+ },
127
+ // If needed we can change some of the defaults here,
128
+ // but they're quite sensible.
129
+ retries: this.maxRetries,
130
+ randomize: true
131
+ }), { throwOnTimeout: true });
132
+ }
133
+ callWithOptions(options, callable, ...args) {
134
+ // Note this doesn't cancel the underlying request,
135
+ // when available prefer to use the signal option of the underlying call
136
+ if (options.signal) {
137
+ return Promise.race([
138
+ this.call(callable, ...args),
139
+ new Promise((_, reject) => {
140
+ options.signal?.addEventListener('abort', () => {
141
+ reject(new Error('AbortError'));
142
+ });
143
+ })
144
+ ]);
145
+ }
146
+ return this.call(callable, ...args);
147
+ }
148
+ fetch(...args) {
149
+ const fetchFn = this.customFetch ?? _getFetchImplementation();
150
+ return this.call(() => fetchFn(...args).then((res) => (res.ok ? res : Promise.reject(res))));
151
+ }
152
+ }
153
+ //# sourceMappingURL=async_caller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async_caller.js","sourceRoot":"","sources":["../../src/utils/async_caller.ts"],"names":[],"mappings":"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"}