@buoy-gg/ask-buoy 7.0.35 → 7.0.36

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 (217) hide show
  1. package/README.md +35 -8
  2. package/lib/commonjs/blocks/BlockRenderer.js +13 -1
  3. package/lib/commonjs/blocks/BlockRenderer.js.map +1 -1
  4. package/lib/commonjs/blocks/DataBlocks.js +126 -33
  5. package/lib/commonjs/blocks/DataBlocks.js.map +1 -1
  6. package/lib/commonjs/blocks/ExtraBlocks.js +12 -6
  7. package/lib/commonjs/blocks/ExtraBlocks.js.map +1 -1
  8. package/lib/commonjs/blocks/MediaBlocks.js +22 -6
  9. package/lib/commonjs/blocks/MediaBlocks.js.map +1 -1
  10. package/lib/commonjs/blocks/blockText.js +60 -0
  11. package/lib/commonjs/blocks/blockText.js.map +1 -0
  12. package/lib/commonjs/blocks/blockText.test.js +53 -0
  13. package/lib/commonjs/blocks/blockText.test.js.map +1 -0
  14. package/lib/commonjs/blocks/primitives.js +58 -2
  15. package/lib/commonjs/blocks/primitives.js.map +1 -1
  16. package/lib/commonjs/components/ApprovalCard.js +111 -7
  17. package/lib/commonjs/components/ApprovalCard.js.map +1 -1
  18. package/lib/commonjs/components/AskBuoyHeader.js +36 -4
  19. package/lib/commonjs/components/AskBuoyHeader.js.map +1 -1
  20. package/lib/commonjs/components/AskBuoyModal.js +160 -34
  21. package/lib/commonjs/components/AskBuoyModal.js.map +1 -1
  22. package/lib/commonjs/components/AskBuoySettings.js +50 -0
  23. package/lib/commonjs/components/AskBuoySettings.js.map +1 -1
  24. package/lib/commonjs/components/Composer.js +94 -14
  25. package/lib/commonjs/components/Composer.js.map +1 -1
  26. package/lib/commonjs/components/EmptyState.js +12 -5
  27. package/lib/commonjs/components/EmptyState.js.map +1 -1
  28. package/lib/commonjs/components/KeyboardPad.js +80 -0
  29. package/lib/commonjs/components/KeyboardPad.js.map +1 -0
  30. package/lib/commonjs/components/Markdown.js +148 -90
  31. package/lib/commonjs/components/Markdown.js.map +1 -1
  32. package/lib/commonjs/components/MessageList.js +339 -92
  33. package/lib/commonjs/components/MessageList.js.map +1 -1
  34. package/lib/commonjs/components/QueuedMessages.js +145 -0
  35. package/lib/commonjs/components/QueuedMessages.js.map +1 -0
  36. package/lib/commonjs/components/markdownParse.js +131 -0
  37. package/lib/commonjs/components/markdownParse.js.map +1 -0
  38. package/lib/commonjs/components/markdownParse.test.js +99 -0
  39. package/lib/commonjs/components/markdownParse.test.js.map +1 -0
  40. package/lib/commonjs/store/activityGroups.js +110 -0
  41. package/lib/commonjs/store/activityGroups.js.map +1 -0
  42. package/lib/commonjs/store/activityGroups.test.js +78 -0
  43. package/lib/commonjs/store/activityGroups.test.js.map +1 -0
  44. package/lib/commonjs/store/askBuoySettings.js +7 -2
  45. package/lib/commonjs/store/askBuoySettings.js.map +1 -1
  46. package/lib/commonjs/store/askBuoyStore.js +192 -10
  47. package/lib/commonjs/store/askBuoyStore.js.map +1 -1
  48. package/lib/commonjs/store/blockPlacement.js +64 -0
  49. package/lib/commonjs/store/blockPlacement.js.map +1 -0
  50. package/lib/commonjs/store/blockPlacement.test.js +123 -0
  51. package/lib/commonjs/store/blockPlacement.test.js.map +1 -0
  52. package/lib/commonjs/store/queue.test.js +150 -0
  53. package/lib/commonjs/store/queue.test.js.map +1 -0
  54. package/lib/commonjs/store/resetConversation.js +77 -0
  55. package/lib/commonjs/store/resetConversation.js.map +1 -0
  56. package/lib/commonjs/store/restorePending.test.js +63 -0
  57. package/lib/commonjs/store/restorePending.test.js.map +1 -0
  58. package/lib/commonjs/store/suggestions.js +54 -0
  59. package/lib/commonjs/store/suggestions.js.map +1 -0
  60. package/lib/commonjs/store/suggestions.test.js +58 -0
  61. package/lib/commonjs/store/suggestions.test.js.map +1 -0
  62. package/lib/commonjs/store/systemLine.test.js +77 -0
  63. package/lib/commonjs/store/systemLine.test.js.map +1 -0
  64. package/lib/commonjs/store/ticketPrompt.js +17 -0
  65. package/lib/commonjs/store/ticketPrompt.js.map +1 -0
  66. package/lib/commonjs/store/transcriptPersistence.js +92 -3
  67. package/lib/commonjs/store/transcriptPersistence.js.map +1 -1
  68. package/lib/commonjs/store/transcriptPersistence.test.js +148 -0
  69. package/lib/commonjs/store/transcriptPersistence.test.js.map +1 -1
  70. package/lib/commonjs/store/turnRendering.test.js +151 -0
  71. package/lib/commonjs/store/turnRendering.test.js.map +1 -0
  72. package/lib/commonjs/store/useAskBuoy.js +271 -49
  73. package/lib/commonjs/store/useAskBuoy.js.map +1 -1
  74. package/lib/commonjs/sync/askBuoySyncAdapter.js +25 -4
  75. package/lib/commonjs/sync/askBuoySyncAdapter.js.map +1 -1
  76. package/lib/module/blocks/BlockRenderer.js +13 -1
  77. package/lib/module/blocks/BlockRenderer.js.map +1 -1
  78. package/lib/module/blocks/DataBlocks.js +128 -35
  79. package/lib/module/blocks/DataBlocks.js.map +1 -1
  80. package/lib/module/blocks/ExtraBlocks.js +12 -6
  81. package/lib/module/blocks/ExtraBlocks.js.map +1 -1
  82. package/lib/module/blocks/MediaBlocks.js +22 -6
  83. package/lib/module/blocks/MediaBlocks.js.map +1 -1
  84. package/lib/module/blocks/blockText.js +55 -0
  85. package/lib/module/blocks/blockText.js.map +1 -0
  86. package/lib/module/blocks/blockText.test.js +53 -0
  87. package/lib/module/blocks/blockText.test.js.map +1 -0
  88. package/lib/module/blocks/primitives.js +58 -2
  89. package/lib/module/blocks/primitives.js.map +1 -1
  90. package/lib/module/components/ApprovalCard.js +113 -9
  91. package/lib/module/components/ApprovalCard.js.map +1 -1
  92. package/lib/module/components/AskBuoyHeader.js +37 -5
  93. package/lib/module/components/AskBuoyHeader.js.map +1 -1
  94. package/lib/module/components/AskBuoyModal.js +163 -37
  95. package/lib/module/components/AskBuoyModal.js.map +1 -1
  96. package/lib/module/components/AskBuoySettings.js +52 -2
  97. package/lib/module/components/AskBuoySettings.js.map +1 -1
  98. package/lib/module/components/Composer.js +95 -15
  99. package/lib/module/components/Composer.js.map +1 -1
  100. package/lib/module/components/EmptyState.js +12 -5
  101. package/lib/module/components/EmptyState.js.map +1 -1
  102. package/lib/module/components/KeyboardPad.js +75 -0
  103. package/lib/module/components/KeyboardPad.js.map +1 -0
  104. package/lib/module/components/Markdown.js +149 -90
  105. package/lib/module/components/Markdown.js.map +1 -1
  106. package/lib/module/components/MessageList.js +341 -94
  107. package/lib/module/components/MessageList.js.map +1 -1
  108. package/lib/module/components/QueuedMessages.js +140 -0
  109. package/lib/module/components/QueuedMessages.js.map +1 -0
  110. package/lib/module/components/markdownParse.js +125 -0
  111. package/lib/module/components/markdownParse.js.map +1 -0
  112. package/lib/module/components/markdownParse.test.js +98 -0
  113. package/lib/module/components/markdownParse.test.js.map +1 -0
  114. package/lib/module/store/activityGroups.js +103 -0
  115. package/lib/module/store/activityGroups.js.map +1 -0
  116. package/lib/module/store/activityGroups.test.js +77 -0
  117. package/lib/module/store/activityGroups.test.js.map +1 -0
  118. package/lib/module/store/askBuoySettings.js +7 -2
  119. package/lib/module/store/askBuoySettings.js.map +1 -1
  120. package/lib/module/store/askBuoyStore.js +190 -10
  121. package/lib/module/store/askBuoyStore.js.map +1 -1
  122. package/lib/module/store/blockPlacement.js +59 -0
  123. package/lib/module/store/blockPlacement.js.map +1 -0
  124. package/lib/module/store/blockPlacement.test.js +122 -0
  125. package/lib/module/store/blockPlacement.test.js.map +1 -0
  126. package/lib/module/store/queue.test.js +149 -0
  127. package/lib/module/store/queue.test.js.map +1 -0
  128. package/lib/module/store/resetConversation.js +72 -0
  129. package/lib/module/store/resetConversation.js.map +1 -0
  130. package/lib/module/store/restorePending.test.js +62 -0
  131. package/lib/module/store/restorePending.test.js.map +1 -0
  132. package/lib/module/store/suggestions.js +49 -0
  133. package/lib/module/store/suggestions.js.map +1 -0
  134. package/lib/module/store/suggestions.test.js +57 -0
  135. package/lib/module/store/suggestions.test.js.map +1 -0
  136. package/lib/module/store/systemLine.test.js +76 -0
  137. package/lib/module/store/systemLine.test.js.map +1 -0
  138. package/lib/module/store/ticketPrompt.js +13 -0
  139. package/lib/module/store/ticketPrompt.js.map +1 -0
  140. package/lib/module/store/transcriptPersistence.js +92 -3
  141. package/lib/module/store/transcriptPersistence.js.map +1 -1
  142. package/lib/module/store/transcriptPersistence.test.js +148 -0
  143. package/lib/module/store/transcriptPersistence.test.js.map +1 -1
  144. package/lib/module/store/turnRendering.test.js +150 -0
  145. package/lib/module/store/turnRendering.test.js.map +1 -0
  146. package/lib/module/store/useAskBuoy.js +275 -53
  147. package/lib/module/store/useAskBuoy.js.map +1 -1
  148. package/lib/module/sync/askBuoySyncAdapter.js +25 -4
  149. package/lib/module/sync/askBuoySyncAdapter.js.map +1 -1
  150. package/lib/typescript/blocks/BlockRenderer.d.ts.map +1 -1
  151. package/lib/typescript/blocks/DataBlocks.d.ts +11 -0
  152. package/lib/typescript/blocks/DataBlocks.d.ts.map +1 -1
  153. package/lib/typescript/blocks/ExtraBlocks.d.ts +18 -2
  154. package/lib/typescript/blocks/ExtraBlocks.d.ts.map +1 -1
  155. package/lib/typescript/blocks/MediaBlocks.d.ts.map +1 -1
  156. package/lib/typescript/blocks/blockText.d.ts +14 -0
  157. package/lib/typescript/blocks/blockText.d.ts.map +1 -0
  158. package/lib/typescript/blocks/blockText.test.d.ts +2 -0
  159. package/lib/typescript/blocks/blockText.test.d.ts.map +1 -0
  160. package/lib/typescript/blocks/primitives.d.ts +16 -1
  161. package/lib/typescript/blocks/primitives.d.ts.map +1 -1
  162. package/lib/typescript/components/ApprovalCard.d.ts.map +1 -1
  163. package/lib/typescript/components/AskBuoyHeader.d.ts +31 -1
  164. package/lib/typescript/components/AskBuoyHeader.d.ts.map +1 -1
  165. package/lib/typescript/components/AskBuoyModal.d.ts.map +1 -1
  166. package/lib/typescript/components/AskBuoySettings.d.ts.map +1 -1
  167. package/lib/typescript/components/Composer.d.ts +16 -1
  168. package/lib/typescript/components/Composer.d.ts.map +1 -1
  169. package/lib/typescript/components/EmptyState.d.ts +5 -1
  170. package/lib/typescript/components/EmptyState.d.ts.map +1 -1
  171. package/lib/typescript/components/KeyboardPad.d.ts +33 -0
  172. package/lib/typescript/components/KeyboardPad.d.ts.map +1 -0
  173. package/lib/typescript/components/Markdown.d.ts +0 -10
  174. package/lib/typescript/components/Markdown.d.ts.map +1 -1
  175. package/lib/typescript/components/MessageList.d.ts +7 -2
  176. package/lib/typescript/components/MessageList.d.ts.map +1 -1
  177. package/lib/typescript/components/QueuedMessages.d.ts +10 -0
  178. package/lib/typescript/components/QueuedMessages.d.ts.map +1 -0
  179. package/lib/typescript/components/markdownParse.d.ts +49 -0
  180. package/lib/typescript/components/markdownParse.d.ts.map +1 -0
  181. package/lib/typescript/components/markdownParse.test.d.ts +2 -0
  182. package/lib/typescript/components/markdownParse.test.d.ts.map +1 -0
  183. package/lib/typescript/store/activityGroups.d.ts +29 -0
  184. package/lib/typescript/store/activityGroups.d.ts.map +1 -0
  185. package/lib/typescript/store/activityGroups.test.d.ts +2 -0
  186. package/lib/typescript/store/activityGroups.test.d.ts.map +1 -0
  187. package/lib/typescript/store/askBuoySettings.d.ts +22 -0
  188. package/lib/typescript/store/askBuoySettings.d.ts.map +1 -1
  189. package/lib/typescript/store/askBuoyStore.d.ts +142 -5
  190. package/lib/typescript/store/askBuoyStore.d.ts.map +1 -1
  191. package/lib/typescript/store/blockPlacement.d.ts +30 -0
  192. package/lib/typescript/store/blockPlacement.d.ts.map +1 -0
  193. package/lib/typescript/store/blockPlacement.test.d.ts +2 -0
  194. package/lib/typescript/store/blockPlacement.test.d.ts.map +1 -0
  195. package/lib/typescript/store/queue.test.d.ts +2 -0
  196. package/lib/typescript/store/queue.test.d.ts.map +1 -0
  197. package/lib/typescript/store/resetConversation.d.ts +38 -0
  198. package/lib/typescript/store/resetConversation.d.ts.map +1 -0
  199. package/lib/typescript/store/restorePending.test.d.ts +2 -0
  200. package/lib/typescript/store/restorePending.test.d.ts.map +1 -0
  201. package/lib/typescript/store/suggestions.d.ts +32 -0
  202. package/lib/typescript/store/suggestions.d.ts.map +1 -0
  203. package/lib/typescript/store/suggestions.test.d.ts +2 -0
  204. package/lib/typescript/store/suggestions.test.d.ts.map +1 -0
  205. package/lib/typescript/store/systemLine.test.d.ts +2 -0
  206. package/lib/typescript/store/systemLine.test.d.ts.map +1 -0
  207. package/lib/typescript/store/ticketPrompt.d.ts +11 -0
  208. package/lib/typescript/store/ticketPrompt.d.ts.map +1 -0
  209. package/lib/typescript/store/transcriptPersistence.d.ts +41 -2
  210. package/lib/typescript/store/transcriptPersistence.d.ts.map +1 -1
  211. package/lib/typescript/store/turnRendering.test.d.ts +2 -0
  212. package/lib/typescript/store/turnRendering.test.d.ts.map +1 -0
  213. package/lib/typescript/store/useAskBuoy.d.ts +23 -1
  214. package/lib/typescript/store/useAskBuoy.d.ts.map +1 -1
  215. package/lib/typescript/sync/askBuoySyncAdapter.d.ts +26 -6
  216. package/lib/typescript/sync/askBuoySyncAdapter.d.ts.map +1 -1
  217. package/package.json +9 -9
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_agentCore","require","foldable","c","effect","status","groupCalls","calls","out","run","flush","length","push","kind","call","titles","Set","map","toolTitle","toolId","id","join","label","joinNatural","count","items","slice","turnFooter","message","parts","startedAt","undefined","endedAt","formatElapsed","n","toolCalls","s","filter","failed","refused","declined","stopped","ms","total","Math","max","floor","m","String","padStart","h"],"sourceRoot":"../../../src","sources":["store/activityGroups.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _vitest = require("vitest");
4
+ var _activityGroups = require("./activityGroups");
5
+ /**
6
+ * The fold rule: consecutive successful reads fold, nothing else ever does,
7
+ * and a group never crosses a write.
8
+ */
9
+
10
+ const call = (id, toolId, effect, status = "ok") => ({
11
+ id,
12
+ toolId,
13
+ action: "x",
14
+ label: `${toolId} ${id}`,
15
+ status,
16
+ effect
17
+ });
18
+ (0, _vitest.describe)("groupCalls", () => {
19
+ (0, _vitest.it)("leaves a single read as an ordinary row", () => {
20
+ const items = (0, _activityGroups.groupCalls)([call("a", "console", "read")]);
21
+ (0, _vitest.expect)(items).toEqual([{
22
+ kind: "call",
23
+ call: _vitest.expect.objectContaining({
24
+ id: "a"
25
+ })
26
+ }]);
27
+ });
28
+ (0, _vitest.it)("folds consecutive successful reads and names the tools once each", () => {
29
+ const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("b", "storage", "read"), call("c", "storage", "read")]);
30
+ (0, _vitest.expect)(items).toHaveLength(1);
31
+ const g = items[0];
32
+ (0, _vitest.expect)(g.kind).toBe("reads");
33
+ (0, _vitest.expect)(g.kind === "reads" && g.count).toBe(3);
34
+ (0, _vitest.expect)(g.kind === "reads" && g.label).toBe("Looked at Network and Storage");
35
+ });
36
+ (0, _vitest.it)("never folds a write, and never folds reads across one", () => {
37
+ const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("b", "storage", "read"), call("w", "zustand", "write"), call("c", "storage", "read"), call("d", "console", "read")]);
38
+ (0, _vitest.expect)(items.map(i => i.kind === "reads" ? `reads:${i.count}` : `call:${i.call.id}`)).toEqual(["reads:2", "call:w", "reads:2"]);
39
+ });
40
+ (0, _vitest.it)("keeps failed, refused, declined, stopped and running reads as their own rows", () => {
41
+ const items = (0, _activityGroups.groupCalls)([call("a", "network", "read"), call("f", "storage", "read", "failed"), call("b", "storage", "read"), call("r", "storage", "read", "running")]);
42
+ (0, _vitest.expect)(items.map(i => i.kind)).toEqual(["call", "call", "call", "call"]);
43
+ });
44
+ });
45
+ (0, _vitest.describe)("turnFooter", () => {
46
+ (0, _vitest.it)("reports duration and action count", () => {
47
+ (0, _vitest.expect)((0, _activityGroups.turnFooter)({
48
+ startedAt: 1_000,
49
+ endedAt: 13_000,
50
+ toolCalls: [call("a", "network", "read"), call("b", "zustand", "write")]
51
+ })).toBe("12s · 2 actions");
52
+ });
53
+ (0, _vitest.it)("separates the outcomes that were not plain successes", () => {
54
+ (0, _vitest.expect)((0, _activityGroups.turnFooter)({
55
+ startedAt: 0,
56
+ endedAt: 48_000,
57
+ toolCalls: [call("a", "network", "read"), call("b", "storage", "write", "failed"), call("c", "storage", "destructive", "declined"), call("d", "storage", "write", "stopped")]
58
+ })).toBe("48s · 4 actions · 1 failed · 1 declined · 1 not run");
59
+ });
60
+ (0, _vitest.it)("invents no duration for a note with no start time", () => {
61
+ (0, _vitest.expect)((0, _activityGroups.turnFooter)({
62
+ endedAt: 5_000,
63
+ toolCalls: []
64
+ })).toBeNull();
65
+ (0, _vitest.expect)((0, _activityGroups.turnFooter)({
66
+ endedAt: 5_000,
67
+ toolCalls: [call("a", "network", "read")]
68
+ })).toBe("1 action");
69
+ });
70
+ });
71
+ (0, _vitest.describe)("formatElapsed", () => {
72
+ (0, _vitest.it)("is compact", () => {
73
+ (0, _vitest.expect)((0, _activityGroups.formatElapsed)(4_200)).toBe("4s");
74
+ (0, _vitest.expect)((0, _activityGroups.formatElapsed)(64_000)).toBe("1m 04s");
75
+ (0, _vitest.expect)((0, _activityGroups.formatElapsed)(3_720_000)).toBe("1h 02m");
76
+ });
77
+ });
78
+ //# sourceMappingURL=activityGroups.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_vitest","require","_activityGroups","call","id","toolId","effect","status","action","label","describe","it","items","groupCalls","expect","toEqual","kind","objectContaining","toHaveLength","g","toBe","count","map","i","turnFooter","startedAt","endedAt","toolCalls","toBeNull","formatElapsed"],"sourceRoot":"../../../src","sources":["store/activityGroups.test.ts"],"mappings":"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","ignoreList":[]}
@@ -15,11 +15,16 @@ var _sharedUi = require("@buoy-gg/shared-ui");
15
15
  */
16
16
 
17
17
  const DEFAULT_SETTINGS = exports.DEFAULT_SETTINGS = {
18
- showThinking: false
18
+ showThinking: false,
19
+ bypassApprovals: false,
20
+ readOnly: false
19
21
  };
20
22
  const store = (0, _sharedUi.definePersistedSetting)(`${_sharedUi.devToolsStorageKeys.base}_ask_buoy_settings`, DEFAULT_SETTINGS, {
21
23
  sanitize: merged => ({
22
- showThinking: merged.showThinking === true
24
+ showThinking: merged.showThinking === true,
25
+ // Fails closed: anything but a literal `true` on disk means "ask me".
26
+ bypassApprovals: merged.bypassApprovals === true,
27
+ readOnly: merged.readOnly === true
23
28
  })
24
29
  });
25
30
  let current = DEFAULT_SETTINGS;
@@ -1 +1 @@
1
- {"version":3,"names":["_sharedUi","require","DEFAULT_SETTINGS","exports","showThinking","store","definePersistedSetting","devToolsStorageKeys","base","sanitize","merged","current","loaded","listeners","Set","emit","fn","askBuoySettings","get","subscribe","add","load","then","value","delete","set","key","save","reset","clear"],"sourceRoot":"../../../src","sources":["store/askBuoySettings.ts"],"mappings":";;;;;;AAQA,IAAAA,SAAA,GAAAC,OAAA;AARA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBO,MAAMC,gBAAiC,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAAEE,YAAY,EAAE;AAAM,CAAC;AAExE,MAAMC,KAAK,GAAG,IAAAC,gCAAsB,EAClC,GAAGC,6BAAmB,CAACC,IAAI,oBAAoB,EAC/CN,gBAAgB,EAChB;EACEO,QAAQ,EAAGC,MAAM,KAAM;IAAEN,YAAY,EAAEM,MAAM,CAACN,YAAY,KAAK;EAAK,CAAC;AACvE,CACF,CAAC;AAED,IAAIO,OAAwB,GAAGT,gBAAgB;AAC/C,IAAIU,MAAM,GAAG,KAAK;AAClB,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;AAEvC,SAASC,IAAIA,CAAA,EAAS;EACpB,KAAK,MAAMC,EAAE,IAAIH,SAAS,EAAE;IAC1B,IAAI;MACFG,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEO,MAAMC,eAAe,GAAAd,OAAA,CAAAc,eAAA,GAAG;EAC7BC,GAAG,EAAEA,CAAA,KAAuBP,OAAO;EAEnCQ,SAASA,CAACH,EAAc,EAAc;IACpCH,SAAS,CAACO,GAAG,CAACJ,EAAE,CAAC;IACjB;IACA,IAAI,CAACJ,MAAM,EAAE;MACXA,MAAM,GAAG,IAAI;MACb,KAAKP,KAAK,CAACgB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAK;QAChCZ,OAAO,GAAGY,KAAK;QACfR,IAAI,CAAC,CAAC;MACR,CAAC,CAAC;IACJ;IACA,OAAO,MAAMF,SAAS,CAACW,MAAM,CAACR,EAAE,CAAC;EACnC,CAAC;EAEDS,GAAGA,CAAkCC,GAAM,EAAEH,KAAyB,EAAQ;IAC5E,IAAIZ,OAAO,CAACe,GAAG,CAAC,KAAKH,KAAK,EAAE;IAC5BZ,OAAO,GAAG;MAAE,GAAGA,OAAO;MAAE,CAACe,GAAG,GAAGH;IAAM,CAAC;IACtCR,IAAI,CAAC,CAAC;IACN,KAAKV,KAAK,CAACsB,IAAI,CAAChB,OAAO,CAAC;EAC1B,CAAC;EAED;EACAiB,KAAKA,CAAA,EAAS;IACZjB,OAAO,GAAGT,gBAAgB;IAC1BU,MAAM,GAAG,KAAK;IACd,KAAKP,KAAK,CAACwB,KAAK,CAAC,CAAC;EACpB;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_sharedUi","require","DEFAULT_SETTINGS","exports","showThinking","bypassApprovals","readOnly","store","definePersistedSetting","devToolsStorageKeys","base","sanitize","merged","current","loaded","listeners","Set","emit","fn","askBuoySettings","get","subscribe","add","load","then","value","delete","set","key","save","reset","clear"],"sourceRoot":"../../../src","sources":["store/askBuoySettings.ts"],"mappings":";;;;;;AAQA,IAAAA,SAAA,GAAAC,OAAA;AARA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyCO,MAAMC,gBAAiC,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC/CE,YAAY,EAAE,KAAK;EACnBC,eAAe,EAAE,KAAK;EACtBC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,KAAK,GAAG,IAAAC,gCAAsB,EAClC,GAAGC,6BAAmB,CAACC,IAAI,oBAAoB,EAC/CR,gBAAgB,EAChB;EACES,QAAQ,EAAGC,MAAM,KAAM;IACrBR,YAAY,EAAEQ,MAAM,CAACR,YAAY,KAAK,IAAI;IAC1C;IACAC,eAAe,EAAEO,MAAM,CAACP,eAAe,KAAK,IAAI;IAChDC,QAAQ,EAAEM,MAAM,CAACN,QAAQ,KAAK;EAChC,CAAC;AACH,CACF,CAAC;AAED,IAAIO,OAAwB,GAAGX,gBAAgB;AAC/C,IAAIY,MAAM,GAAG,KAAK;AAClB,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;AAEvC,SAASC,IAAIA,CAAA,EAAS;EACpB,KAAK,MAAMC,EAAE,IAAIH,SAAS,EAAE;IAC1B,IAAI;MACFG,EAAE,CAAC,CAAC;IACN,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEO,MAAMC,eAAe,GAAAhB,OAAA,CAAAgB,eAAA,GAAG;EAC7BC,GAAG,EAAEA,CAAA,KAAuBP,OAAO;EAEnCQ,SAASA,CAACH,EAAc,EAAc;IACpCH,SAAS,CAACO,GAAG,CAACJ,EAAE,CAAC;IACjB;IACA,IAAI,CAACJ,MAAM,EAAE;MACXA,MAAM,GAAG,IAAI;MACb,KAAKP,KAAK,CAACgB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAK;QAChCZ,OAAO,GAAGY,KAAK;QACfR,IAAI,CAAC,CAAC;MACR,CAAC,CAAC;IACJ;IACA,OAAO,MAAMF,SAAS,CAACW,MAAM,CAACR,EAAE,CAAC;EACnC,CAAC;EAEDS,GAAGA,CAAkCC,GAAM,EAAEH,KAAyB,EAAQ;IAC5E,IAAIZ,OAAO,CAACe,GAAG,CAAC,KAAKH,KAAK,EAAE;IAC5BZ,OAAO,GAAG;MAAE,GAAGA,OAAO;MAAE,CAACe,GAAG,GAAGH;IAAM,CAAC;IACtCR,IAAI,CAAC,CAAC;IACN,KAAKV,KAAK,CAACsB,IAAI,CAAChB,OAAO,CAAC;EAC1B,CAAC;EAED;EACAiB,KAAKA,CAAA,EAAS;IACZjB,OAAO,GAAGX,gBAAgB;IAC1BY,MAAM,GAAG,KAAK;IACd,KAAKP,KAAK,CAACwB,KAAK,CAAC,CAAC;EACpB;AACF,CAAC","ignoreList":[]}
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.askBuoyStore = void 0;
7
+ exports.queuePauseReason = queuePauseReason;
8
+ exports.turnPhaseOf = turnPhaseOf;
7
9
  var _agentCore = require("@buoy-gg/agent-core");
8
10
  /**
9
11
  * Conversation state for the sheet.
@@ -31,6 +33,25 @@ var _agentCore = require("@buoy-gg/agent-core");
31
33
  * all the thoughts in a lump at the top would misreport it.
32
34
  */
33
35
 
36
+ /**
37
+ * A message typed while a turn was running.
38
+ *
39
+ * A list with ids, not a string: the single slot it replaced OVERWROTE — type
40
+ * two things mid-turn and the first vanished, which is precisely the loss the
41
+ * queue exists to prevent. Ids so two identical requests stay distinguishable
42
+ * and the list can be edited by row.
43
+ */
44
+
45
+ /**
46
+ * The one word every component reads to know what the chat is doing.
47
+ *
48
+ * Presentation state (minimised, settings open) is NOT in here on purpose —
49
+ * it sits on top. This exists because the header, the composer, the queue
50
+ * flush and the modal each used to derive their own answer from five
51
+ * overlapping booleans, and disagreed: the queue fired after an error because
52
+ * "not busy" looked like "idle" to it.
53
+ */
54
+
34
55
  /**
35
56
  * Message ids carry this run's token — see agent-core's `runId`. A plain `m1`
36
57
  * collided head-on with the `m1` in a restored transcript, and the message
@@ -53,16 +74,21 @@ function encodeParams(params) {
53
74
  return undefined;
54
75
  }
55
76
  }
77
+
78
+ /** Queue ids carry the run token too — a restored queue keys on them. */
79
+ const nextQueuedId = (0, _agentCore.idFactory)("q");
56
80
  let state = {
57
81
  messages: [],
58
82
  busy: false,
83
+ stopping: false,
59
84
  pending: null,
60
85
  notice: null,
61
86
  configured: false,
62
87
  answers: {},
63
88
  awaitingBlockId: null,
64
89
  actionState: {},
65
- queued: null,
90
+ queued: [],
91
+ draft: null,
66
92
  usage: {
67
93
  input: 0,
68
94
  output: 0,
@@ -153,10 +179,58 @@ const askBuoyStore = exports.askBuoyStore = {
153
179
  busy: true
154
180
  });
155
181
  },
156
- /** Park a message typed mid-turn instead of silently dropping it. */
157
- setQueued(text) {
182
+ /** Park a message typed mid-turn, behind whatever is already parked. */
183
+ enqueue(text) {
184
+ const item = {
185
+ id: nextQueuedId(),
186
+ text
187
+ };
188
+ set({
189
+ queued: [...state.queued, item]
190
+ });
191
+ return item;
192
+ },
193
+ /** Drop one parked message — the ✕ on its row. */
194
+ removeQueued(id) {
195
+ if (!state.queued.some(q => q.id === id)) return;
196
+ set({
197
+ queued: state.queued.filter(q => q.id !== id)
198
+ });
199
+ },
200
+ /** Take the FIRST parked message off the queue — the flush path. */
201
+ shiftQueued() {
202
+ const [next, ...rest] = state.queued;
203
+ if (!next) return undefined;
204
+ set({
205
+ queued: rest
206
+ });
207
+ return next;
208
+ },
209
+ /** Hand one parked message back to the composer to edit. See `draft`. */
210
+ takeQueuedToDraft(id) {
211
+ const item = state.queued.find(q => q.id === id);
212
+ if (!item) return;
213
+ set({
214
+ queued: state.queued.filter(q => q.id !== id),
215
+ draft: item.text
216
+ });
217
+ },
218
+ /**
219
+ * The user pressed Stop. The turn is still winding down — the abort is only
220
+ * read between calls — so the phase is `stopping`, not `idle`, until
221
+ * `finishAssistant` lands.
222
+ */
223
+ requestStop() {
224
+ if (!state.busy || state.stopping) return;
225
+ set({
226
+ stopping: true
227
+ });
228
+ },
229
+ /** The composer has taken the draft into its input. */
230
+ clearDraft() {
231
+ if (state.draft === null) return;
158
232
  set({
159
- queued: text
233
+ draft: null
160
234
  });
161
235
  },
162
236
  /** Drop one message — the failed assistant bubble a retry replaces. */
@@ -208,13 +282,33 @@ const askBuoyStore = exports.askBuoyStore = {
208
282
  * only form a non-developer can actually check.
209
283
  */
210
284
  applyEvent(messageId, ev) {
285
+ if (ev.type === "history-trimmed") {
286
+ // Before the answer it affects, so it reads as a caption on the gap
287
+ // rather than as part of the reply.
288
+ const at = state.messages.findIndex(m => m.id === messageId);
289
+ const line = {
290
+ id: nextId(),
291
+ role: "assistant",
292
+ system: true,
293
+ text: `Older messages were trimmed from the agent's memory (${ev.droppedRounds} exchange${ev.droppedRounds === 1 ? "" : "s"}). It may not recall setup from earlier in this chat — the changes bar still lists what is applied.`,
294
+ toolCalls: [],
295
+ blocks: [],
296
+ endedAt: Date.now()
297
+ };
298
+ const next = [...state.messages];
299
+ next.splice(at < 0 ? next.length : at, 0, line);
300
+ set({
301
+ messages: next
302
+ });
303
+ return;
304
+ }
211
305
  const messages = state.messages.map(m => {
212
306
  if (m.id !== messageId) return m;
213
307
  switch (ev.type) {
214
308
  case "text":
215
309
  return {
216
310
  ...m,
217
- text: m.breakBeforeNextText && m.text ? `${m.text.trimEnd()}\n\n${ev.delta}` : m.text + ev.delta,
311
+ text: (m.breakBeforeNextText || ev.breakBefore) && m.text ? `${m.text.trimEnd()}\n\n${ev.delta}` : m.text + ev.delta,
218
312
  breakBeforeNextText: false
219
313
  };
220
314
  case "reasoning":
@@ -247,7 +341,7 @@ const askBuoyStore = exports.askBuoyStore = {
247
341
  breakBeforeNextText: true,
248
342
  toolCalls: m.toolCalls.map(c => c.id === ev.id ? {
249
343
  ...c,
250
- status: !ev.ok && ev.summary === "refused" ? "refused" : ev.ok ? "ok" : "failed",
344
+ status: !ev.ok && ev.summary === "refused" ? "refused" : !ev.ok && ev.summary === "declined" ? "declined" : !ev.ok && ev.summary === "stopped" ? "stopped" : ev.ok ? "ok" : "failed",
251
345
  summary: ev.summary,
252
346
  durationMs: ev.durationMs,
253
347
  result: ev.result
@@ -297,6 +391,15 @@ const askBuoyStore = exports.askBuoyStore = {
297
391
  } : {})
298
392
  });
299
393
  },
394
+ /** The user pressed Stop on this turn. See `ChatMessage.stopped`. */
395
+ markStopped(messageId) {
396
+ set({
397
+ messages: state.messages.map(m => m.id === messageId ? {
398
+ ...m,
399
+ stopped: true
400
+ } : m)
401
+ });
402
+ },
300
403
  finishAssistant(messageId) {
301
404
  set({
302
405
  messages: state.messages.map(m => m.id === messageId ? {
@@ -304,7 +407,8 @@ const askBuoyStore = exports.askBuoyStore = {
304
407
  streaming: false,
305
408
  endedAt: Date.now()
306
409
  } : m),
307
- busy: false
410
+ busy: false,
411
+ stopping: false
308
412
  });
309
413
  },
310
414
  askApproval(input) {
@@ -324,6 +428,49 @@ const askBuoyStore = exports.askBuoyStore = {
324
428
  });
325
429
  pending?.resolve(approved);
326
430
  },
431
+ /**
432
+ * Put an unanswered approval back after a restart.
433
+ *
434
+ * A question the app asked and then forgot is worse than not asking: the
435
+ * user tapped nothing, so as far as they are concerned the change is still
436
+ * waiting for them. `resolve` is a no-op because nothing is waiting on this
437
+ * one any more; `restored` is what tells the sheet to run the call rather
438
+ * than answer a dead promise.
439
+ *
440
+ * Refused once a turn is under way, for the same reason `hydrate` is: a slow
441
+ * disk read must not shove an old question in front of a live conversation.
442
+ */
443
+ restorePending(input) {
444
+ if (state.pending || state.busy) return false;
445
+ set({
446
+ pending: {
447
+ ...input,
448
+ restored: true,
449
+ resolve: () => {}
450
+ }
451
+ });
452
+ return true;
453
+ },
454
+ /**
455
+ * A line in the transcript from Buoy itself rather than from the model.
456
+ *
457
+ * It wears the assistant's bubble because that is the only shape the list
458
+ * renders, but nothing is sent to the model and nothing lands in its
459
+ * history — it exists so an approval answered after a restart leaves a
460
+ * trace, instead of the card silently vanishing a second time.
461
+ */
462
+ addNote(text) {
463
+ set({
464
+ messages: [...state.messages, {
465
+ id: nextId(),
466
+ role: "assistant",
467
+ text,
468
+ toolCalls: [],
469
+ blocks: [],
470
+ endedAt: Date.now()
471
+ }]
472
+ });
473
+ },
327
474
  /**
328
475
  * Put a saved conversation back, once, at open.
329
476
  *
@@ -333,9 +480,13 @@ const askBuoyStore = exports.askBuoyStore = {
333
480
  hydrate(input) {
334
481
  if (state.messages.length > 0 || state.busy) return false;
335
482
  set({
336
- messages: input.messages,
483
+ messages: input.messages.map(m => ({
484
+ ...m,
485
+ restored: true
486
+ })),
337
487
  answers: input.answers,
338
- usage: input.usage
488
+ usage: input.usage,
489
+ queued: input.queued ?? []
339
490
  });
340
491
  return true;
341
492
  },
@@ -346,12 +497,14 @@ const askBuoyStore = exports.askBuoyStore = {
346
497
  set({
347
498
  messages: [],
348
499
  busy: false,
500
+ stopping: false,
349
501
  pending: null,
350
502
  notice: null,
351
503
  answers: {},
352
504
  awaitingBlockId: null,
353
505
  actionState: {},
354
- queued: null,
506
+ queued: [],
507
+ draft: null,
355
508
  usage: {
356
509
  input: 0,
357
510
  output: 0,
@@ -362,4 +515,33 @@ const askBuoyStore = exports.askBuoyStore = {
362
515
  });
363
516
  }
364
517
  };
518
+
519
+ /** See TurnPhase. Pure, so every component and the flush effect agree. */
520
+ function turnPhaseOf(s) {
521
+ if (s.pending) return "awaitingApproval";
522
+ if (s.busy) return s.stopping ? "stopping" : "running";
523
+ if (s.awaitingBlockId) return "awaitingAnswer";
524
+ return "idle";
525
+ }
526
+
527
+ /**
528
+ * Why parked messages are NOT being sent right now, in the user's words — or
529
+ * null when the queue may deliver.
530
+ *
531
+ * A queued message is a next TASK, not an answer. It used to go the moment
532
+ * `busy` dropped: after an error it fired into the same dead connection, and
533
+ * with a choice block open it was sent as the reply to the question. So the
534
+ * queue holds on error, Stop, an approval and an unanswered Ask block, and
535
+ * says which.
536
+ */
537
+ function queuePauseReason(s) {
538
+ const phase = turnPhaseOf(s);
539
+ if (phase === "running" || phase === "stopping") return null;
540
+ if (phase === "awaitingApproval") return "Paused — answer the approval above first.";
541
+ if (phase === "awaitingAnswer") return "Paused — answer the question above first.";
542
+ const last = s.messages[s.messages.length - 1];
543
+ if (last?.role === "assistant" && last.error) return "Paused — the last turn failed.";
544
+ if (last?.role === "assistant" && last.stopped) return "Paused — you stopped the last turn.";
545
+ return null;
546
+ }
365
547
  //# sourceMappingURL=askBuoyStore.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_agentCore","require","nextId","idFactory","MAX_PARAM_CHARS","encodeParams","params","Object","keys","length","undefined","json","JSON","stringify","slice","state","messages","busy","pending","notice","configured","answers","awaitingBlockId","actionState","queued","usage","input","output","requests","meta","listeners","Set","ledgerRef","heldSession","set","next","fn","askBuoyStore","exports","getState","subscribe","add","delete","setLedger","ledger","getLedger","holdSession","session","signature","getHeldSession","setNotice","setConfigured","setMeta","same","every","k","addUser","text","id","role","toolCalls","blocks","beginTurn","setQueued","removeMessage","filter","m","recordAnswer","answer","blockId","setActionState","key","value","startAssistant","streaming","startedAt","Date","now","applyEvent","messageId","ev","map","type","breakBeforeNextText","trimEnd","delta","reasoning","afterCalls","toolId","action","label","description","status","effect","c","ok","summary","durationMs","result","block","forToolCallId","error","message","finishAssistant","endedAt","askApproval","Promise","resolve","answerApproval","approved","hydrate","reset"],"sourceRoot":"../../../src","sources":["store/askBuoyStore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_agentCore","require","nextId","idFactory","MAX_PARAM_CHARS","encodeParams","params","Object","keys","length","undefined","json","JSON","stringify","slice","nextQueuedId","state","messages","busy","stopping","pending","notice","configured","answers","awaitingBlockId","actionState","queued","draft","usage","input","output","requests","meta","listeners","Set","ledgerRef","heldSession","set","next","fn","askBuoyStore","exports","getState","subscribe","add","delete","setLedger","ledger","getLedger","holdSession","session","signature","getHeldSession","setNotice","setConfigured","setMeta","same","every","k","addUser","text","id","role","toolCalls","blocks","beginTurn","enqueue","item","removeQueued","some","q","filter","shiftQueued","rest","takeQueuedToDraft","find","requestStop","clearDraft","removeMessage","m","recordAnswer","answer","blockId","setActionState","key","value","startAssistant","streaming","startedAt","Date","now","applyEvent","messageId","ev","type","at","findIndex","line","system","droppedRounds","endedAt","splice","map","breakBeforeNextText","breakBefore","trimEnd","delta","reasoning","afterCalls","toolId","action","label","description","status","effect","c","ok","summary","durationMs","result","block","forToolCallId","error","message","markStopped","stopped","finishAssistant","askApproval","Promise","resolve","answerApproval","approved","restorePending","restored","addNote","hydrate","reset","turnPhaseOf","s","queuePauseReason","phase","last"],"sourceRoot":"../../../src","sources":["store/askBuoyStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.placeBlocks = placeBlocks;
7
+ var _agentCore = require("@buoy-gg/agent-core");
8
+ /**
9
+ * Where each block of a turn is drawn: inside a step row, after the prose as
10
+ * the answer itself, or last of all as the thing being asked.
11
+ *
12
+ * Pure and separate from MessageList because the rule is subtle and the cost
13
+ * of getting it wrong is silent — a block that lands in no bucket renders
14
+ * nowhere at all, and nothing in the UI says so. That is exactly what
15
+ * happened: "show me the shop as pictures" built its imageGrid, the engine
16
+ * accepted it, and the sheet dropped it on the floor twice while the model
17
+ * narrated the artwork in prose.
18
+ */
19
+
20
+ /**
21
+ * A receipt that belongs inside its step row rather than in the answer: it
22
+ * came from a tool call, and it reports what was READ, not what was changed.
23
+ *
24
+ * ONLY a receipt nests, which is why this tests for the receipt provenances
25
+ * rather than for "not changed". A model-authored block (`buoy_ui`, source
26
+ * "model") also carries the id of the call that produced it — but `buoy_ui`
27
+ * emits no activity row, so there was no step for it to nest under.
28
+ */
29
+ function nestsUnderStep({
30
+ block,
31
+ forToolCallId
32
+ }) {
33
+ if (!forToolCallId) return false;
34
+ const source = "source" in block ? block.source : undefined;
35
+ return source === "live" || source === "mocked";
36
+ }
37
+ function placeBlocks(blocks, stepIds) {
38
+ const steps = new Set(stepIds);
39
+ const nested = new Map();
40
+ const afterText = [];
41
+ const ask = [];
42
+ for (const placed of blocks) {
43
+ if ((0, _agentCore.isAskBlock)(placed.block)) {
44
+ ask.push(placed);
45
+ continue;
46
+ }
47
+ // A block may only nest under a step that actually has a row. Anything
48
+ // pointing at a call the activity list never drew renders with the answer
49
+ // — never nowhere.
50
+ if (nestsUnderStep(placed) && steps.has(placed.forToolCallId)) {
51
+ const list = nested.get(placed.forToolCallId) ?? [];
52
+ list.push(placed.block);
53
+ nested.set(placed.forToolCallId, list);
54
+ } else {
55
+ afterText.push(placed);
56
+ }
57
+ }
58
+ return {
59
+ nested,
60
+ afterText,
61
+ ask
62
+ };
63
+ }
64
+ //# sourceMappingURL=blockPlacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_agentCore","require","nestsUnderStep","block","forToolCallId","source","undefined","placeBlocks","blocks","stepIds","steps","Set","nested","Map","afterText","ask","placed","isAskBlock","push","has","list","get","set"],"sourceRoot":"../../../src","sources":["store/blockPlacement.ts"],"mappings":";;;;;;AAWA,IAAAA,UAAA,GAAAC,OAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAC;EAAEC,KAAK;EAAEC;AAA2B,CAAC,EAAW;EACtE,IAAI,CAACA,aAAa,EAAE,OAAO,KAAK;EAChC,MAAMC,MAAM,GAAG,QAAQ,IAAIF,KAAK,GAAGA,KAAK,CAACE,MAAM,GAAGC,SAAS;EAC3D,OAAOD,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,QAAQ;AACjD;AAEO,SAASE,WAAWA,CAACC,MAAqB,EAAEC,OAAyB,EAAkB;EAC5F,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAACF,OAAO,CAAC;EAC9B,MAAMG,MAAM,GAAG,IAAIC,GAAG,CAAkB,CAAC;EACzC,MAAMC,SAAwB,GAAG,EAAE;EACnC,MAAMC,GAAkB,GAAG,EAAE;EAE7B,KAAK,MAAMC,MAAM,IAAIR,MAAM,EAAE;IAC3B,IAAI,IAAAS,qBAAU,EAACD,MAAM,CAACb,KAAK,CAAC,EAAE;MAC5BY,GAAG,CAACG,IAAI,CAACF,MAAM,CAAC;MAChB;IACF;IACA;IACA;IACA;IACA,IAAId,cAAc,CAACc,MAAM,CAAC,IAAIN,KAAK,CAACS,GAAG,CAACH,MAAM,CAACZ,aAAc,CAAC,EAAE;MAC9D,MAAMgB,IAAI,GAAGR,MAAM,CAACS,GAAG,CAACL,MAAM,CAACZ,aAAc,CAAC,IAAI,EAAE;MACpDgB,IAAI,CAACF,IAAI,CAACF,MAAM,CAACb,KAAK,CAAC;MACvBS,MAAM,CAACU,GAAG,CAACN,MAAM,CAACZ,aAAa,EAAGgB,IAAI,CAAC;IACzC,CAAC,MAAM;MACLN,SAAS,CAACI,IAAI,CAACF,MAAM,CAAC;IACxB;EACF;EAEA,OAAO;IAAEJ,MAAM;IAAEE,SAAS;IAAEC;EAAI,CAAC;AACnC","ignoreList":[]}