@bolt-foundry/gambit 0.8.6-rc.3 → 0.8.6-rc.4

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 (338) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/esm/gambit/simulator-ui/dist/bundle.js +2435 -620
  3. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  4. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.d.ts +7 -0
  5. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.d.ts.map +1 -0
  6. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.js +22 -0
  7. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.d.ts +4 -0
  8. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.d.ts.map +1 -0
  9. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.js +456 -0
  10. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.d.ts +3 -0
  11. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.d.ts.map +1 -0
  12. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.js +1 -0
  13. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.d.ts +110 -0
  14. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.d.ts.map +1 -0
  15. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.js +1 -0
  16. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.d.ts +10 -0
  17. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.d.ts.map +1 -0
  18. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.js +1 -0
  19. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.d.ts +3 -0
  20. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.d.ts.map +1 -0
  21. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.js +96 -0
  22. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.d.ts +91 -0
  23. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.d.ts.map +1 -0
  24. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.js +1 -0
  25. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.d.ts +6 -0
  26. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.d.ts.map +1 -0
  27. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.js +610 -0
  28. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/normalization_ast.d.ts.map +1 -1
  29. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/normalization_ast.js +86 -0
  30. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/param_type.d.ts +18 -0
  31. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/param_type.d.ts.map +1 -1
  32. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.d.ts +1 -1
  33. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.d.ts.map +1 -1
  34. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.js +18 -0
  35. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/raw_response_type.d.ts +18 -0
  36. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/raw_response_type.d.ts.map +1 -1
  37. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/resolver_reader.d.ts.map +1 -1
  38. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/resolver_reader.js +120 -0
  39. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/normalization_ast.d.ts.map +1 -1
  40. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/normalization_ast.js +43 -0
  41. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/param_type.d.ts +9 -0
  42. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/param_type.d.ts.map +1 -1
  43. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.d.ts +1 -1
  44. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.d.ts.map +1 -1
  45. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.js +9 -0
  46. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/raw_response_type.d.ts +9 -0
  47. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/raw_response_type.d.ts.map +1 -1
  48. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/resolver_reader.d.ts.map +1 -1
  49. package/esm/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/resolver_reader.js +60 -0
  50. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.d.ts.map +1 -1
  51. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.js +43 -0
  52. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts +1 -1
  53. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts.map +1 -1
  54. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.js +9 -0
  55. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts +9 -0
  56. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts.map +1 -1
  57. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts +9 -0
  58. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts.map +1 -1
  59. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.d.ts.map +1 -1
  60. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.js +60 -0
  61. package/esm/simulator-ui/__generated__/__isograph/iso.d.ts +4 -0
  62. package/esm/simulator-ui/__generated__/__isograph/iso.d.ts.map +1 -1
  63. package/esm/simulator-ui/__generated__/__isograph/iso.js +3 -0
  64. package/esm/simulator-ui/__generated__/builtRoutes.d.ts +2 -0
  65. package/esm/simulator-ui/__generated__/builtRoutes.d.ts.map +1 -1
  66. package/esm/simulator-ui/__generated__/builtRoutes.js +3 -0
  67. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  68. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.js +141 -4
  69. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.d.ts.map +1 -1
  70. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.js +3 -1
  71. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSave.d.ts +93 -0
  72. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSave.d.ts.map +1 -0
  73. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSave.js +101 -0
  74. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.d.ts +93 -0
  75. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.d.ts.map +1 -0
  76. package/esm/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.js +7 -0
  77. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.d.ts +18 -0
  78. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.d.ts.map +1 -1
  79. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.js +18 -0
  80. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunSendMutation.d.ts +18 -0
  81. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunSendMutation.d.ts.map +1 -1
  82. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.d.ts +9 -0
  83. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.d.ts.map +1 -1
  84. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.js +9 -0
  85. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunStartMutation.d.ts +9 -0
  86. package/esm/simulator-ui/mutations/GambitWorkspaceScenarioRunStartMutation.d.ts.map +1 -1
  87. package/esm/simulator-ui/src/AppIsoMinimal.d.ts +3 -0
  88. package/esm/simulator-ui/src/AppIsoMinimal.d.ts.map +1 -1
  89. package/esm/simulator-ui/src/AppIsoMinimal.js +7 -4
  90. package/esm/simulator-ui/src/AppShell.d.ts.map +1 -1
  91. package/esm/simulator-ui/src/AppShell.js +2 -2
  92. package/esm/simulator-ui/src/MinimalRouterRoot.js +4 -2
  93. package/esm/simulator-ui/src/RouterContext.d.ts.map +1 -1
  94. package/esm/simulator-ui/src/RouterContext.js +7 -3
  95. package/esm/simulator-ui/src/shared.d.ts.map +1 -1
  96. package/esm/simulator-ui/src/shared.js +3 -3
  97. package/esm/src/server/request_handler.d.ts +210 -0
  98. package/esm/src/server/request_handler.d.ts.map +1 -0
  99. package/esm/src/server/request_handler.js +416 -0
  100. package/esm/src/server/workspace/build.d.ts +57 -0
  101. package/esm/src/server/workspace/build.d.ts.map +1 -0
  102. package/esm/src/server/workspace/build.js +377 -0
  103. package/esm/src/server/workspace/conversation_sessions.d.ts +83 -0
  104. package/esm/src/server/workspace/conversation_sessions.d.ts.map +1 -0
  105. package/esm/src/server/workspace/conversation_sessions.js +163 -0
  106. package/esm/src/server/workspace/grading.d.ts +52 -0
  107. package/esm/src/server/workspace/grading.d.ts.map +1 -0
  108. package/esm/src/server/workspace/grading.js +488 -0
  109. package/esm/src/server/workspace/helpers.d.ts +46 -0
  110. package/esm/src/server/workspace/helpers.d.ts.map +1 -0
  111. package/esm/src/server/workspace/helpers.js +340 -0
  112. package/esm/src/server/workspace/read_model.d.ts +35 -0
  113. package/esm/src/server/workspace/read_model.d.ts.map +1 -0
  114. package/esm/src/server/workspace/read_model.js +121 -0
  115. package/esm/src/server/workspace/response_events.d.ts +28 -0
  116. package/esm/src/server/workspace/response_events.d.ts.map +1 -0
  117. package/esm/src/server/workspace/response_events.js +178 -0
  118. package/esm/src/server/workspace/run_deck.d.ts +23 -0
  119. package/esm/src/server/workspace/run_deck.d.ts.map +1 -0
  120. package/esm/src/server/workspace/run_deck.js +79 -0
  121. package/esm/src/server/workspace/scenario_history.d.ts +8 -0
  122. package/esm/src/server/workspace/scenario_history.d.ts.map +1 -0
  123. package/esm/src/server/workspace/scenario_history.js +269 -0
  124. package/esm/src/server/workspace/scenarios.d.ts +93 -0
  125. package/esm/src/server/workspace/scenarios.d.ts.map +1 -0
  126. package/esm/src/server/workspace/scenarios.js +1052 -0
  127. package/esm/src/server/workspace/schema.d.ts +35 -0
  128. package/esm/src/server/workspace/schema.d.ts.map +1 -0
  129. package/esm/src/server/workspace/schema.js +427 -0
  130. package/esm/src/server/workspace/sessions.d.ts +38 -0
  131. package/esm/src/server/workspace/sessions.d.ts.map +1 -0
  132. package/esm/src/server/workspace/sessions.js +232 -0
  133. package/esm/src/server/workspace/types.d.ts +128 -0
  134. package/esm/src/server/workspace/types.d.ts.map +1 -0
  135. package/esm/src/server/workspace/types.js +1 -0
  136. package/esm/src/server/workspace/verify.d.ts +52 -0
  137. package/esm/src/server/workspace/verify.d.ts.map +1 -0
  138. package/esm/src/server/workspace/verify.js +449 -0
  139. package/esm/src/server.d.ts +0 -3
  140. package/esm/src/server.d.ts.map +1 -1
  141. package/esm/src/server.js +324 -6732
  142. package/esm/src/server_isograph_environment.d.ts +12 -1
  143. package/esm/src/server_isograph_environment.d.ts.map +1 -1
  144. package/esm/src/server_legacy_api_routes.d.ts +137 -0
  145. package/esm/src/server_legacy_api_routes.d.ts.map +1 -0
  146. package/esm/src/server_legacy_api_routes.js +629 -0
  147. package/esm/src/server_openresponses.d.ts +6 -0
  148. package/esm/src/server_openresponses.d.ts.map +1 -0
  149. package/esm/src/server_openresponses.js +687 -0
  150. package/esm/src/server_session_store.d.ts +4 -0
  151. package/esm/src/server_session_store.d.ts.map +1 -1
  152. package/esm/src/server_session_store.js +196 -1
  153. package/esm/src/server_simulator_ui.d.ts +27 -0
  154. package/esm/src/server_simulator_ui.d.ts.map +1 -0
  155. package/esm/src/server_simulator_ui.js +501 -0
  156. package/esm/src/server_types.d.ts +22 -0
  157. package/esm/src/server_types.d.ts.map +1 -1
  158. package/esm/src/server_workspace_decks.d.ts +31 -0
  159. package/esm/src/server_workspace_decks.d.ts.map +1 -0
  160. package/esm/src/server_workspace_decks.js +98 -0
  161. package/esm/src/server_workspace_graphql.d.ts +17 -0
  162. package/esm/src/server_workspace_graphql.d.ts.map +1 -0
  163. package/esm/src/server_workspace_graphql.js +52 -0
  164. package/esm/src/server_workspace_runtime.d.ts +55 -0
  165. package/esm/src/server_workspace_runtime.d.ts.map +1 -0
  166. package/esm/src/server_workspace_runtime.js +358 -0
  167. package/esm/src/simulator_graphql.d.ts +14 -1
  168. package/esm/src/simulator_graphql.d.ts.map +1 -1
  169. package/esm/src/simulator_graphql.js +77 -0
  170. package/package.json +1 -1
  171. package/script/gambit/simulator-ui/dist/bundle.js +2435 -620
  172. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  173. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.d.ts +7 -0
  174. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.d.ts.map +1 -0
  175. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/entrypoint.js +27 -0
  176. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.d.ts +4 -0
  177. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.d.ts.map +1 -0
  178. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/normalization_ast.js +458 -0
  179. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.d.ts +3 -0
  180. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.d.ts.map +1 -0
  181. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/output_type.js +2 -0
  182. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.d.ts +110 -0
  183. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.d.ts.map +1 -0
  184. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/param_type.js +2 -0
  185. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.d.ts +10 -0
  186. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.d.ts.map +1 -0
  187. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/parameters_type.js +2 -0
  188. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.d.ts +3 -0
  189. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.d.ts.map +1 -0
  190. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/query_text.js +98 -0
  191. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.d.ts +91 -0
  192. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.d.ts.map +1 -0
  193. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/raw_response_type.js +2 -0
  194. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.d.ts +6 -0
  195. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.d.ts.map +1 -0
  196. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceFeedbackSave/resolver_reader.js +615 -0
  197. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/normalization_ast.d.ts.map +1 -1
  198. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/normalization_ast.js +86 -0
  199. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/param_type.d.ts +18 -0
  200. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/param_type.d.ts.map +1 -1
  201. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.d.ts +1 -1
  202. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.d.ts.map +1 -1
  203. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/query_text.js +18 -0
  204. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/raw_response_type.d.ts +18 -0
  205. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/raw_response_type.d.ts.map +1 -1
  206. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/resolver_reader.d.ts.map +1 -1
  207. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunSend/resolver_reader.js +120 -0
  208. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/normalization_ast.d.ts.map +1 -1
  209. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/normalization_ast.js +43 -0
  210. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/param_type.d.ts +9 -0
  211. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/param_type.d.ts.map +1 -1
  212. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.d.ts +1 -1
  213. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.d.ts.map +1 -1
  214. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/query_text.js +9 -0
  215. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/raw_response_type.d.ts +9 -0
  216. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/raw_response_type.d.ts.map +1 -1
  217. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/resolver_reader.d.ts.map +1 -1
  218. package/script/simulator-ui/__generated__/__isograph/Mutation/GambitWorkspaceScenarioRunStart/resolver_reader.js +60 -0
  219. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.d.ts.map +1 -1
  220. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.js +43 -0
  221. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts +1 -1
  222. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts.map +1 -1
  223. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.js +9 -0
  224. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts +9 -0
  225. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts.map +1 -1
  226. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts +9 -0
  227. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts.map +1 -1
  228. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.d.ts.map +1 -1
  229. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.js +60 -0
  230. package/script/simulator-ui/__generated__/__isograph/iso.d.ts +4 -0
  231. package/script/simulator-ui/__generated__/__isograph/iso.d.ts.map +1 -1
  232. package/script/simulator-ui/__generated__/__isograph/iso.js +45 -42
  233. package/script/simulator-ui/__generated__/builtRoutes.d.ts +2 -0
  234. package/script/simulator-ui/__generated__/builtRoutes.d.ts.map +1 -1
  235. package/script/simulator-ui/__generated__/builtRoutes.js +18 -15
  236. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  237. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.js +141 -4
  238. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.d.ts.map +1 -1
  239. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.js +3 -1
  240. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSave.d.ts +93 -0
  241. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSave.d.ts.map +1 -0
  242. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSave.js +104 -0
  243. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.d.ts +93 -0
  244. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.d.ts.map +1 -0
  245. package/script/simulator-ui/mutations/GambitWorkspaceFeedbackSaveMutation.js +13 -0
  246. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.d.ts +18 -0
  247. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.d.ts.map +1 -1
  248. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunSend.js +18 -0
  249. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunSendMutation.d.ts +18 -0
  250. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunSendMutation.d.ts.map +1 -1
  251. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.d.ts +9 -0
  252. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.d.ts.map +1 -1
  253. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunStart.js +9 -0
  254. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunStartMutation.d.ts +9 -0
  255. package/script/simulator-ui/mutations/GambitWorkspaceScenarioRunStartMutation.d.ts.map +1 -1
  256. package/script/simulator-ui/src/AppIsoMinimal.d.ts +3 -0
  257. package/script/simulator-ui/src/AppIsoMinimal.d.ts.map +1 -1
  258. package/script/simulator-ui/src/AppIsoMinimal.js +7 -4
  259. package/script/simulator-ui/src/AppShell.d.ts.map +1 -1
  260. package/script/simulator-ui/src/AppShell.js +1 -1
  261. package/script/simulator-ui/src/MinimalRouterRoot.js +4 -2
  262. package/script/simulator-ui/src/RouterContext.d.ts.map +1 -1
  263. package/script/simulator-ui/src/RouterContext.js +6 -2
  264. package/script/simulator-ui/src/shared.d.ts.map +1 -1
  265. package/script/simulator-ui/src/shared.js +3 -3
  266. package/script/src/server/request_handler.d.ts +210 -0
  267. package/script/src/server/request_handler.d.ts.map +1 -0
  268. package/script/src/server/request_handler.js +453 -0
  269. package/script/src/server/workspace/build.d.ts +57 -0
  270. package/script/src/server/workspace/build.d.ts.map +1 -0
  271. package/script/src/server/workspace/build.js +381 -0
  272. package/script/src/server/workspace/conversation_sessions.d.ts +83 -0
  273. package/script/src/server/workspace/conversation_sessions.d.ts.map +1 -0
  274. package/script/src/server/workspace/conversation_sessions.js +167 -0
  275. package/script/src/server/workspace/grading.d.ts +52 -0
  276. package/script/src/server/workspace/grading.d.ts.map +1 -0
  277. package/script/src/server/workspace/grading.js +492 -0
  278. package/script/src/server/workspace/helpers.d.ts +46 -0
  279. package/script/src/server/workspace/helpers.d.ts.map +1 -0
  280. package/script/src/server/workspace/helpers.js +353 -0
  281. package/script/src/server/workspace/read_model.d.ts +35 -0
  282. package/script/src/server/workspace/read_model.d.ts.map +1 -0
  283. package/script/src/server/workspace/read_model.js +125 -0
  284. package/script/src/server/workspace/response_events.d.ts +28 -0
  285. package/script/src/server/workspace/response_events.d.ts.map +1 -0
  286. package/script/src/server/workspace/response_events.js +182 -0
  287. package/script/src/server/workspace/run_deck.d.ts +23 -0
  288. package/script/src/server/workspace/run_deck.d.ts.map +1 -0
  289. package/script/src/server/workspace/run_deck.js +84 -0
  290. package/script/src/server/workspace/scenario_history.d.ts +8 -0
  291. package/script/src/server/workspace/scenario_history.d.ts.map +1 -0
  292. package/script/src/server/workspace/scenario_history.js +310 -0
  293. package/script/src/server/workspace/scenarios.d.ts +93 -0
  294. package/script/src/server/workspace/scenarios.d.ts.map +1 -0
  295. package/script/src/server/workspace/scenarios.js +1089 -0
  296. package/script/src/server/workspace/schema.d.ts +35 -0
  297. package/script/src/server/workspace/schema.d.ts.map +1 -0
  298. package/script/src/server/workspace/schema.js +478 -0
  299. package/script/src/server/workspace/sessions.d.ts +38 -0
  300. package/script/src/server/workspace/sessions.d.ts.map +1 -0
  301. package/script/src/server/workspace/sessions.js +269 -0
  302. package/script/src/server/workspace/types.d.ts +128 -0
  303. package/script/src/server/workspace/types.d.ts.map +1 -0
  304. package/script/src/server/workspace/types.js +2 -0
  305. package/script/src/server/workspace/verify.d.ts +52 -0
  306. package/script/src/server/workspace/verify.d.ts.map +1 -0
  307. package/script/src/server/workspace/verify.js +453 -0
  308. package/script/src/server.d.ts +0 -3
  309. package/script/src/server.d.ts.map +1 -1
  310. package/script/src/server.js +391 -6799
  311. package/script/src/server_isograph_environment.d.ts +12 -1
  312. package/script/src/server_isograph_environment.d.ts.map +1 -1
  313. package/script/src/server_legacy_api_routes.d.ts +137 -0
  314. package/script/src/server_legacy_api_routes.d.ts.map +1 -0
  315. package/script/src/server_legacy_api_routes.js +666 -0
  316. package/script/src/server_openresponses.d.ts +6 -0
  317. package/script/src/server_openresponses.d.ts.map +1 -0
  318. package/script/src/server_openresponses.js +690 -0
  319. package/script/src/server_session_store.d.ts +4 -0
  320. package/script/src/server_session_store.d.ts.map +1 -1
  321. package/script/src/server_session_store.js +196 -1
  322. package/script/src/server_simulator_ui.d.ts +27 -0
  323. package/script/src/server_simulator_ui.d.ts.map +1 -0
  324. package/script/src/server_simulator_ui.js +544 -0
  325. package/script/src/server_types.d.ts +22 -0
  326. package/script/src/server_types.d.ts.map +1 -1
  327. package/script/src/server_workspace_decks.d.ts +31 -0
  328. package/script/src/server_workspace_decks.d.ts.map +1 -0
  329. package/script/src/server_workspace_decks.js +142 -0
  330. package/script/src/server_workspace_graphql.d.ts +17 -0
  331. package/script/src/server_workspace_graphql.d.ts.map +1 -0
  332. package/script/src/server_workspace_graphql.js +56 -0
  333. package/script/src/server_workspace_runtime.d.ts +55 -0
  334. package/script/src/server_workspace_runtime.d.ts.map +1 -0
  335. package/script/src/server_workspace_runtime.js +395 -0
  336. package/script/src/simulator_graphql.d.ts +14 -1
  337. package/script/src/simulator_graphql.d.ts.map +1 -1
  338. package/script/src/simulator_graphql.js +77 -0
@@ -0,0 +1,178 @@
1
+ const asJsonValue = (value) => {
2
+ if (value === null || typeof value === "string" ||
3
+ typeof value === "number" || typeof value === "boolean") {
4
+ return value;
5
+ }
6
+ if (Array.isArray(value)) {
7
+ return value.map((entry) => asJsonValue(entry));
8
+ }
9
+ if (value && typeof value === "object") {
10
+ const out = {};
11
+ for (const [key, entry] of Object.entries(value)) {
12
+ out[key] = asJsonValue(entry);
13
+ }
14
+ return out;
15
+ }
16
+ return String(value);
17
+ };
18
+ const hashStringFNV1a = (value) => {
19
+ let hash = 0x811c9dc5;
20
+ for (let i = 0; i < value.length; i += 1) {
21
+ hash ^= value.charCodeAt(i);
22
+ hash = Math.imul(hash, 0x01000193) >>> 0;
23
+ }
24
+ return hash.toString(16).padStart(8, "0");
25
+ };
26
+ const tracePayloadFingerprint = (payload) => hashStringFNV1a(JSON.stringify(asJsonValue(payload)));
27
+ const messageContentFingerprint = (content) => hashStringFNV1a(JSON.stringify(asJsonValue(content)));
28
+ const stringifyMessageContent = (content) => {
29
+ if (typeof content === "string")
30
+ return content;
31
+ if (content === null || content === undefined)
32
+ return "";
33
+ const normalized = asJsonValue(content);
34
+ if (typeof normalized === "string")
35
+ return normalized;
36
+ try {
37
+ return JSON.stringify(normalized);
38
+ }
39
+ catch {
40
+ return String(content);
41
+ }
42
+ };
43
+ const traceToRecord = (trace) => {
44
+ return !trace || typeof trace !== "object" || Array.isArray(trace)
45
+ ? {}
46
+ : trace;
47
+ };
48
+ export const createOpenResponsesEventPersistence = (deps) => {
49
+ const persistOpenResponsesTraceEvent = (state, trace, fallbackRunId) => {
50
+ if (!state)
51
+ return;
52
+ const rawPayload = traceToRecord(trace);
53
+ const eventType = typeof rawPayload.type === "string"
54
+ ? rawPayload.type
55
+ : "";
56
+ if (!eventType.startsWith("response."))
57
+ return;
58
+ const runId = typeof rawPayload.runId === "string" &&
59
+ rawPayload.runId.length > 0
60
+ ? rawPayload.runId
61
+ : fallbackRunId;
62
+ if (!runId)
63
+ return;
64
+ const eventTs = typeof rawPayload.ts === "number" &&
65
+ Number.isFinite(rawPayload.ts)
66
+ ? rawPayload.ts
67
+ : Date.now();
68
+ const eventScope = typeof rawPayload.item_id === "string"
69
+ ? rawPayload.item_id
70
+ : typeof rawPayload.actionCallId === "string"
71
+ ? rawPayload.actionCallId
72
+ : typeof rawPayload.output_index === "number"
73
+ ? String(rawPayload.output_index)
74
+ : typeof rawPayload.sequence_number === "number"
75
+ ? String(rawPayload.sequence_number)
76
+ : "event";
77
+ const payload = deps.sanitizeJsonRecord(rawPayload);
78
+ const payloadFingerprint = tracePayloadFingerprint(payload);
79
+ void deps.appendOpenResponsesRunEvent(state, {
80
+ workspace_id: "",
81
+ run_id: runId,
82
+ event_type: eventType,
83
+ payload,
84
+ idempotency_key: `${runId}:${eventType}:${eventTs}:${eventScope}:${payloadFingerprint}`,
85
+ created_at: new Date(eventTs).toISOString(),
86
+ });
87
+ };
88
+ const persistCanonicalUserInputEvent = (args) => {
89
+ if (!args.state)
90
+ return;
91
+ const content = args.message.trim();
92
+ if (!content)
93
+ return;
94
+ const eventTs = Date.now();
95
+ void deps.appendOpenResponsesRunEvent(args.state, {
96
+ workspace_id: "",
97
+ run_id: args.runId,
98
+ event_type: "input.item",
99
+ payload: {
100
+ type: "input.item",
101
+ role: "user",
102
+ content: [{ type: "input_text", text: content }],
103
+ source: args.source,
104
+ },
105
+ idempotency_key: `${args.runId}:input.item:${args.source}:${eventTs}:${content.slice(0, 64)}`,
106
+ created_at: new Date(eventTs).toISOString(),
107
+ });
108
+ };
109
+ const persistCanonicalStateMessages = (args) => {
110
+ if (!args.state || !Array.isArray(args.state.messages))
111
+ return;
112
+ const refs = Array.isArray(args.state.messageRefs)
113
+ ? args.state.messageRefs
114
+ : [];
115
+ const startIndex = Math.max(0, args.startIndex ?? 0);
116
+ for (let index = startIndex; index < args.state.messages.length; index += 1) {
117
+ const message = args.state.messages[index];
118
+ if (!message || (message.role !== "user" && message.role !== "assistant")) {
119
+ continue;
120
+ }
121
+ const content = stringifyMessageContent(message.content).trim();
122
+ if (!content)
123
+ continue;
124
+ const ref = refs[index];
125
+ const messageRefId = typeof ref?.id === "string" && ref.id.trim().length > 0
126
+ ? ref.id.trim()
127
+ : undefined;
128
+ const fingerprint = messageContentFingerprint(message.content);
129
+ if (message.role === "user") {
130
+ void deps.appendOpenResponsesRunEvent(args.state, {
131
+ workspace_id: "",
132
+ run_id: args.runId,
133
+ event_type: "input.item",
134
+ payload: {
135
+ type: "input.item",
136
+ role: "user",
137
+ content: [{ type: "input_text", text: content }],
138
+ source: args.source,
139
+ ...(messageRefId ? { message_id: messageRefId, messageRefId } : {}),
140
+ },
141
+ idempotency_key: `${args.runId}:input.item:canonical:${messageRefId ?? index}:${fingerprint}`,
142
+ created_at: new Date().toISOString(),
143
+ });
144
+ continue;
145
+ }
146
+ void deps.appendOpenResponsesRunEvent(args.state, {
147
+ workspace_id: "",
148
+ run_id: args.runId,
149
+ event_type: "response.output_item.done",
150
+ payload: {
151
+ type: "response.output_item.done",
152
+ output_index: index,
153
+ item: {
154
+ type: "message",
155
+ role: "assistant",
156
+ content: [{ type: "output_text", text: content }],
157
+ ...(messageRefId ? { messageRefId } : {}),
158
+ },
159
+ },
160
+ idempotency_key: `${args.runId}:response.output_item.done:canonical:${messageRefId ?? index}:${fingerprint}`,
161
+ created_at: new Date().toISOString(),
162
+ });
163
+ }
164
+ };
165
+ const persistOpenResponsesTracesFromState = (state, fallbackRunId) => {
166
+ if (!state || !Array.isArray(state.traces))
167
+ return;
168
+ for (const trace of state.traces) {
169
+ persistOpenResponsesTraceEvent(state, trace, fallbackRunId);
170
+ }
171
+ };
172
+ return {
173
+ persistOpenResponsesTraceEvent,
174
+ persistCanonicalUserInputEvent,
175
+ persistCanonicalStateMessages,
176
+ persistOpenResponsesTracesFromState,
177
+ };
178
+ };
@@ -0,0 +1,23 @@
1
+ import type { ModelProvider, SavedState } from "@bolt-foundry/gambit-core";
2
+ export declare function stringifyOutput(output: unknown): string;
3
+ export declare function resolveWorkerSandboxForSignalAwareRun(args: {
4
+ workerSandbox?: boolean;
5
+ signal?: AbortSignal;
6
+ }): boolean | undefined;
7
+ export declare function runDeckWithFallback(args: {
8
+ path: string;
9
+ input?: unknown;
10
+ inputProvided?: boolean;
11
+ modelProvider: ModelProvider;
12
+ state?: SavedState;
13
+ allowRootStringInput?: boolean;
14
+ initialUserMessage?: string;
15
+ onStateUpdate?: (state: SavedState) => void;
16
+ stream?: boolean;
17
+ onStreamText?: (chunk: string) => void;
18
+ responsesMode?: boolean;
19
+ workerSandbox?: boolean;
20
+ signal?: AbortSignal;
21
+ onCancel?: () => unknown | Promise<unknown>;
22
+ }): Promise<unknown>;
23
+ //# sourceMappingURL=run_deck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run_deck.d.ts","sourceRoot":"","sources":["../../../../src/src/server/workspace/run_deck.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAevD;AAUD,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,GAAG,SAAS,CAMtB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CnB"}
@@ -0,0 +1,79 @@
1
+ import { runDeck } from "@bolt-foundry/gambit-core";
2
+ export function stringifyOutput(output) {
3
+ if (output === null || output === undefined)
4
+ return "";
5
+ if (output &&
6
+ typeof output === "object" &&
7
+ "payload" in output) {
8
+ return stringifyOutput(output.payload);
9
+ }
10
+ if (typeof output === "string")
11
+ return output;
12
+ try {
13
+ return JSON.stringify(output);
14
+ }
15
+ catch {
16
+ return String(output);
17
+ }
18
+ }
19
+ function shouldRetryWithStringInput(error) {
20
+ if (!error)
21
+ return false;
22
+ if (error instanceof Error) {
23
+ return error.message.includes("Schema validation failed");
24
+ }
25
+ return false;
26
+ }
27
+ export function resolveWorkerSandboxForSignalAwareRun(args) {
28
+ // gambit-core currently rejects worker sandbox runs when an AbortSignal is
29
+ // supplied. Simulator flows require signals for stop/reset cancellation, so
30
+ // force in-process execution for those runs.
31
+ if (args.signal)
32
+ return false;
33
+ return args.workerSandbox;
34
+ }
35
+ export async function runDeckWithFallback(args) {
36
+ const workerSandbox = resolveWorkerSandboxForSignalAwareRun({
37
+ workerSandbox: args.workerSandbox,
38
+ signal: args.signal,
39
+ });
40
+ try {
41
+ return await runDeck({
42
+ path: args.path,
43
+ input: args.input,
44
+ inputProvided: args.inputProvided,
45
+ modelProvider: args.modelProvider,
46
+ state: args.state,
47
+ allowRootStringInput: args.allowRootStringInput,
48
+ initialUserMessage: args.initialUserMessage,
49
+ onStateUpdate: args.onStateUpdate,
50
+ stream: args.stream,
51
+ onStreamText: args.onStreamText,
52
+ responsesMode: args.responsesMode,
53
+ workerSandbox,
54
+ signal: args.signal,
55
+ onCancel: args.onCancel,
56
+ });
57
+ }
58
+ catch (error) {
59
+ if (args.input === undefined && shouldRetryWithStringInput(error)) {
60
+ return await runDeck({
61
+ path: args.path,
62
+ input: "",
63
+ inputProvided: true,
64
+ modelProvider: args.modelProvider,
65
+ state: args.state,
66
+ allowRootStringInput: args.allowRootStringInput,
67
+ initialUserMessage: args.initialUserMessage,
68
+ onStateUpdate: args.onStateUpdate,
69
+ stream: args.stream,
70
+ onStreamText: args.onStreamText,
71
+ responsesMode: args.responsesMode,
72
+ workerSandbox,
73
+ signal: args.signal,
74
+ onCancel: args.onCancel,
75
+ });
76
+ }
77
+ throw error;
78
+ }
79
+ }
@@ -0,0 +1,8 @@
1
+ import type { SavedState } from "@bolt-foundry/gambit-core";
2
+ import type { TestBotRunStatus } from "./types.js";
3
+ export declare const readPersistedTestRunStatusById: (sessionState: SavedState, workspaceId: string, requestedRunId: string) => TestBotRunStatus | null;
4
+ export declare const listPersistedTestRunStatuses: (sessionState: SavedState, workspaceId: string) => Array<TestBotRunStatus>;
5
+ export declare const listScenarioRunStatusesFromStateMeta: (sessionState: SavedState, workspaceId: string) => Array<TestBotRunStatus>;
6
+ export declare const isFeedbackEligibleMessageRef: (state: SavedState, messageRefId: string) => boolean;
7
+ export declare const isFeedbackEligiblePersistedTestRunMessageRef: (state: SavedState, runId: string, messageRefId: string) => boolean;
8
+ //# sourceMappingURL=scenario_history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario_history.d.ts","sourceRoot":"","sources":["../../../../src/src/server/workspace/scenario_history.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,UAAU,EAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwDnD,eAAO,MAAM,8BAA8B,GACzC,cAAc,UAAU,EACxB,aAAa,MAAM,EACnB,gBAAgB,MAAM,KACrB,gBAAgB,GAAG,IAiCrB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,cAAc,UAAU,EACxB,aAAa,MAAM,KAClB,KAAK,CAAC,gBAAgB,CAiCxB,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAC/C,cAAc,UAAU,EACxB,aAAa,MAAM,KAClB,KAAK,CAAC,gBAAgB,CAyExB,CAAC;AAgBF,eAAO,MAAM,4BAA4B,GACvC,OAAO,UAAU,EACjB,cAAc,MAAM,KACnB,OAMF,CAAC;AAEF,eAAO,MAAM,4CAA4C,GACvD,OAAO,UAAU,EACjB,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,OAgDF,CAAC"}
@@ -0,0 +1,269 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import { summarizeRespondCall, syncTestBotRunFromState } from "./helpers.js";
3
+ const extractPersistedWorkspacePayload = (record) => {
4
+ const type = record.type;
5
+ if (type !== "build" && type !== "test" && type !== "grade" &&
6
+ type !== "session") {
7
+ return record;
8
+ }
9
+ const nested = record.data;
10
+ if (!nested || typeof nested !== "object" || Array.isArray(nested)) {
11
+ return record;
12
+ }
13
+ return nested;
14
+ };
15
+ const normalizePersistedTestRunStatus = (value, workspaceId) => {
16
+ if (!value || typeof value !== "object")
17
+ return null;
18
+ const raw = value;
19
+ const id = typeof raw.id === "string" ? raw.id : "";
20
+ if (!id)
21
+ return null;
22
+ const rawStatus = raw.status;
23
+ const status = rawStatus === "running" || rawStatus === "completed" ||
24
+ rawStatus === "error" || rawStatus === "canceled"
25
+ ? rawStatus
26
+ : "idle";
27
+ return {
28
+ id,
29
+ status,
30
+ workspaceId: typeof raw.workspaceId === "string"
31
+ ? raw.workspaceId
32
+ : workspaceId,
33
+ sessionId: typeof raw.sessionId === "string" ? raw.sessionId : workspaceId,
34
+ error: typeof raw.error === "string" ? raw.error : undefined,
35
+ startedAt: typeof raw.startedAt === "string" ? raw.startedAt : undefined,
36
+ finishedAt: typeof raw.finishedAt === "string" ? raw.finishedAt : undefined,
37
+ maxTurns: typeof raw.maxTurns === "number" && Number.isFinite(raw.maxTurns)
38
+ ? raw.maxTurns
39
+ : undefined,
40
+ messages: Array.isArray(raw.messages)
41
+ ? raw.messages
42
+ : [],
43
+ traces: Array.isArray(raw.traces) ? raw.traces : [],
44
+ toolInserts: Array.isArray(raw.toolInserts)
45
+ ? raw.toolInserts
46
+ : [],
47
+ };
48
+ };
49
+ export const readPersistedTestRunStatusById = (sessionState, workspaceId, requestedRunId) => {
50
+ const eventsPath = typeof sessionState.meta?.sessionEventsPath === "string"
51
+ ? sessionState.meta.sessionEventsPath
52
+ : undefined;
53
+ if (!eventsPath)
54
+ return null;
55
+ try {
56
+ const text = dntShim.Deno.readTextFileSync(eventsPath);
57
+ let latest = null;
58
+ for (const line of text.split("\n")) {
59
+ if (!line.trim())
60
+ continue;
61
+ let parsed = null;
62
+ try {
63
+ parsed = JSON.parse(line);
64
+ }
65
+ catch {
66
+ continue;
67
+ }
68
+ if (!parsed || typeof parsed !== "object")
69
+ continue;
70
+ const payload = extractPersistedWorkspacePayload(parsed);
71
+ if (payload.type !== "testBotStatus" &&
72
+ payload.type !== "gambit.test.status")
73
+ continue;
74
+ const normalized = normalizePersistedTestRunStatus(payload.run, workspaceId);
75
+ if (!normalized || normalized.id !== requestedRunId)
76
+ continue;
77
+ latest = normalized;
78
+ }
79
+ return latest;
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ };
85
+ export const listPersistedTestRunStatuses = (sessionState, workspaceId) => {
86
+ const eventsPath = typeof sessionState.meta?.sessionEventsPath === "string"
87
+ ? sessionState.meta.sessionEventsPath
88
+ : undefined;
89
+ if (!eventsPath)
90
+ return [];
91
+ try {
92
+ const text = dntShim.Deno.readTextFileSync(eventsPath);
93
+ const latestByRunId = new Map();
94
+ for (const line of text.split("\n")) {
95
+ if (!line.trim())
96
+ continue;
97
+ let parsed = null;
98
+ try {
99
+ parsed = JSON.parse(line);
100
+ }
101
+ catch {
102
+ continue;
103
+ }
104
+ if (!parsed || typeof parsed !== "object")
105
+ continue;
106
+ const payload = extractPersistedWorkspacePayload(parsed);
107
+ if (payload.type !== "testBotStatus" &&
108
+ payload.type !== "gambit.test.status")
109
+ continue;
110
+ const normalized = normalizePersistedTestRunStatus(payload.run, workspaceId);
111
+ if (!normalized || !normalized.id)
112
+ continue;
113
+ latestByRunId.set(normalized.id, normalized);
114
+ }
115
+ return [...latestByRunId.values()];
116
+ }
117
+ catch {
118
+ return [];
119
+ }
120
+ };
121
+ export const listScenarioRunStatusesFromStateMeta = (sessionState, workspaceId) => {
122
+ const meta = sessionState.meta && typeof sessionState.meta === "object"
123
+ ? sessionState.meta
124
+ : null;
125
+ if (!meta)
126
+ return [];
127
+ const runsById = new Map();
128
+ const upsertPlaceholder = (runId, updatedAt) => {
129
+ if (!runId || runsById.has(runId))
130
+ return;
131
+ runsById.set(runId, {
132
+ id: runId,
133
+ status: "completed",
134
+ workspaceId,
135
+ sessionId: workspaceId,
136
+ startedAt: updatedAt,
137
+ finishedAt: updatedAt,
138
+ messages: [],
139
+ traces: [],
140
+ toolInserts: [],
141
+ });
142
+ };
143
+ const primaryRunId = typeof meta.scenarioRunId === "string" &&
144
+ meta.scenarioRunId.trim().length > 0
145
+ ? meta.scenarioRunId.trim()
146
+ : typeof meta.testBotRunId === "string" &&
147
+ meta.testBotRunId.trim().length > 0
148
+ ? meta.testBotRunId.trim()
149
+ : null;
150
+ if (primaryRunId) {
151
+ const primary = {
152
+ id: primaryRunId,
153
+ status: "idle",
154
+ workspaceId,
155
+ sessionId: workspaceId,
156
+ startedAt: typeof meta.startedAt === "string"
157
+ ? meta.startedAt
158
+ : undefined,
159
+ finishedAt: typeof meta.finishedAt === "string"
160
+ ? meta.finishedAt
161
+ : undefined,
162
+ messages: [],
163
+ traces: [],
164
+ toolInserts: [],
165
+ };
166
+ syncTestBotRunFromState(primary, sessionState);
167
+ if (primary.messages.length > 0 && primary.status === "idle") {
168
+ primary.status = "completed";
169
+ }
170
+ runsById.set(primary.id, primary);
171
+ }
172
+ const summaryValues = [
173
+ meta.scenarioRunSummary,
174
+ ...(Array.isArray(meta.scenarioRunSummaries)
175
+ ? meta.scenarioRunSummaries
176
+ : []),
177
+ ];
178
+ for (const value of summaryValues) {
179
+ if (!value || typeof value !== "object" || Array.isArray(value))
180
+ continue;
181
+ const summary = value;
182
+ const summaryRunId = typeof summary.scenarioRunId === "string" &&
183
+ summary.scenarioRunId.trim().length > 0
184
+ ? summary.scenarioRunId.trim()
185
+ : null;
186
+ if (!summaryRunId)
187
+ continue;
188
+ const updatedAt = typeof summary.updatedAt === "string"
189
+ ? summary.updatedAt
190
+ : undefined;
191
+ upsertPlaceholder(summaryRunId, updatedAt);
192
+ }
193
+ return [...runsById.values()];
194
+ };
195
+ const resolveMessageByRef = (state, messageRefId) => {
196
+ const refs = Array.isArray(state.messageRefs) ? state.messageRefs : [];
197
+ const messages = Array.isArray(state.messages) ? state.messages : [];
198
+ const idx = refs.findIndex((ref) => ref?.id === messageRefId);
199
+ if (idx < 0)
200
+ return {};
201
+ return {
202
+ message: messages[idx],
203
+ ref: refs[idx],
204
+ };
205
+ };
206
+ export const isFeedbackEligibleMessageRef = (state, messageRefId) => {
207
+ const { message, ref } = resolveMessageByRef(state, messageRefId);
208
+ if (!message)
209
+ return false;
210
+ if (message.role === "assistant")
211
+ return true;
212
+ if (message.role === "user" && ref?.source === "scenario")
213
+ return true;
214
+ return summarizeRespondCall(message) !== null;
215
+ };
216
+ export const isFeedbackEligiblePersistedTestRunMessageRef = (state, runId, messageRefId) => {
217
+ const eventsPath = typeof state.meta?.sessionEventsPath === "string"
218
+ ? state.meta.sessionEventsPath
219
+ : undefined;
220
+ if (!eventsPath)
221
+ return false;
222
+ try {
223
+ const text = dntShim.Deno.readTextFileSync(eventsPath);
224
+ for (const line of text.split("\n")) {
225
+ if (!line.trim())
226
+ continue;
227
+ let parsed = null;
228
+ try {
229
+ parsed = JSON.parse(line);
230
+ }
231
+ catch {
232
+ continue;
233
+ }
234
+ if (!parsed || typeof parsed !== "object")
235
+ continue;
236
+ const payload = extractPersistedWorkspacePayload(parsed);
237
+ if (payload.type !== "testBotStatus" &&
238
+ payload.type !== "gambit.test.status") {
239
+ continue;
240
+ }
241
+ const run = payload.run;
242
+ if (!run || typeof run !== "object")
243
+ continue;
244
+ const runRecord = run;
245
+ if (typeof runRecord.id !== "string" || runRecord.id !== runId) {
246
+ continue;
247
+ }
248
+ if (!Array.isArray(runRecord.messages))
249
+ continue;
250
+ const found = runRecord.messages.some((entry) => {
251
+ if (!entry || typeof entry !== "object")
252
+ return false;
253
+ const message = entry;
254
+ if (message.messageRefId !== messageRefId)
255
+ return false;
256
+ if (message.role === "assistant")
257
+ return true;
258
+ return message.role === "user" &&
259
+ message.messageSource === "scenario";
260
+ });
261
+ if (found)
262
+ return true;
263
+ }
264
+ }
265
+ catch {
266
+ return false;
267
+ }
268
+ return false;
269
+ };
@@ -0,0 +1,93 @@
1
+ import type { FeedbackEntry, ModelProvider, SavedState, TraceEvent } from "@bolt-foundry/gambit-core";
2
+ import type { SchemaDescription, WorkspaceDeckState } from "../../server_types.js";
3
+ import type { WorkspaceRecord } from "../../server_workspace_runtime.js";
4
+ import type { Maybe } from "../../utility_types.js";
5
+ import type { TestBotRunEntry, TestBotRunStatus } from "./types.js";
6
+ export declare const createWorkspaceScenarioService: (deps: {
7
+ modelProvider: ModelProvider;
8
+ model?: string;
9
+ modelForce?: string;
10
+ responsesMode?: boolean;
11
+ workerSandbox?: boolean;
12
+ consoleTracer?: ((event: TraceEvent) => void) | undefined;
13
+ logger: {
14
+ error: (...args: Array<unknown>) => void;
15
+ warn: (...args: Array<unknown>) => void;
16
+ };
17
+ randomId: (prefix: string) => string;
18
+ getResolvedDeckPath: () => string;
19
+ getRootStartMode: () => "assistant" | "user" | undefined;
20
+ getSchemaPromise: () => Promise<SchemaDescription>;
21
+ buildWorkspaceMeta: (record: {
22
+ id: string;
23
+ rootDir: string;
24
+ rootDeckPath: string;
25
+ }, base?: Record<string, unknown>) => Record<string, unknown>;
26
+ selectCanonicalScenarioRunSummary: (meta: Record<string, unknown>) => Maybe<{
27
+ scenarioRunId: string;
28
+ }>;
29
+ persistSessionState: (state: SavedState) => SavedState;
30
+ appendSessionEvent: (state: SavedState, event: Record<string, unknown>) => void;
31
+ appendWorkspaceEnvelope: (state: SavedState, domain: "test", payload: unknown) => void;
32
+ appendDurableStreamEvent: (streamId: string, payload: unknown) => void;
33
+ workspaceStreamId: string;
34
+ testStreamId: string;
35
+ persistOpenResponsesTraceEvent: (state: Maybe<SavedState>, trace: TraceEvent, fallbackRunId?: string) => void;
36
+ persistCanonicalStateMessages: (args: {
37
+ state: Maybe<SavedState>;
38
+ runId: string;
39
+ startIndex?: number;
40
+ source: "build" | "scenario" | "manual" | "artifact";
41
+ }) => void;
42
+ readSessionState: (workspaceId: string) => SavedState | undefined;
43
+ readSessionStateStrict: (workspaceId: string, options?: {
44
+ withTraces?: boolean;
45
+ }) => SavedState | undefined;
46
+ activateWorkspaceDeck: (workspaceId?: Maybe<string>, options?: {
47
+ forceReload?: boolean;
48
+ source?: string;
49
+ reloadAttemptId?: string;
50
+ }) => Promise<void>;
51
+ resolveWorkspaceRecord: (workspaceId: string) => Maybe<WorkspaceRecord>;
52
+ readWorkspaceDeckStateStrict: (workspaceId: string) => WorkspaceDeckState;
53
+ buildRootScenarioFallback: (deckState: WorkspaceDeckState) => Maybe<WorkspaceDeckState["scenarioDecks"][number]>;
54
+ resolveScenarioDeckFromState: (deckState: WorkspaceDeckState, identifier: string) => WorkspaceDeckState["scenarioDecks"][number] | undefined;
55
+ }) => {
56
+ broadcastTestBot: (payload: unknown, workspaceId?: string) => void;
57
+ startWorkspaceScenarioRunForGraphql: (args: {
58
+ workspaceId: string;
59
+ runId?: string;
60
+ scenarioDeckId?: Maybe<string>;
61
+ scenarioInput?: unknown;
62
+ assistantInit?: unknown;
63
+ }) => Promise<TestBotRunStatus>;
64
+ sendWorkspaceScenarioRunForGraphql: (args: {
65
+ workspaceId: string;
66
+ runId: string;
67
+ message: string;
68
+ }) => Promise<TestBotRunStatus>;
69
+ readWorkspaceScenarioRunsForGraphql: (workspaceId: string) => Array<TestBotRunStatus>;
70
+ readWorkspaceScenarioRunForGraphql: (workspaceId: string, runId: string) => TestBotRunStatus | undefined;
71
+ saveWorkspaceFeedbackForGraphql: (args: {
72
+ workspaceId: string;
73
+ runId?: Maybe<string>;
74
+ messageRefId: string;
75
+ score: Maybe<number>;
76
+ reason?: Maybe<string>;
77
+ }) => {
78
+ feedback?: FeedbackEntry;
79
+ deleted: boolean;
80
+ run: TestBotRunStatus;
81
+ };
82
+ stopWorkspaceScenarioRunForGraphql: (args: {
83
+ workspaceId: string;
84
+ runId: string;
85
+ }) => Promise<TestBotRunStatus>;
86
+ getLiveTestRunEntry: (runId: string) => TestBotRunEntry | undefined;
87
+ getLiveTestRunEntryByWorkspaceId: (workspaceId: string) => TestBotRunEntry | undefined;
88
+ readPersistedTestRunStatusById: (sessionState: SavedState, workspaceId: string, requestedRunId: string) => TestBotRunStatus | null;
89
+ isFeedbackEligibleMessageRef: (state: SavedState, messageRefId: string) => boolean;
90
+ isFeedbackEligiblePersistedTestRunMessageRef: (state: SavedState, runId: string, messageRefId: string) => boolean;
91
+ syncTestBotRunFromState: (run: TestBotRunStatus, state: SavedState) => void;
92
+ };
93
+ //# sourceMappingURL=scenarios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarios.d.ts","sourceRoot":"","sources":["../../../../src/src/server/workspace/scenarios.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,EAEV,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA+CpB,eAAO,MAAM,8BAA8B,GAAI,MAAM;IACnD,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;QACzC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;KACzC,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,gBAAgB,EAAE,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IACzD,gBAAgB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAClB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAC7D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,iCAAiC,EAAE,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,mBAAmB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAC;IACvD,kBAAkB,EAAE,CAClB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,IAAI,CAAC;IACV,uBAAuB,EAAE,CACvB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KACb,IAAI,CAAC;IACV,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B,EAAE,CAC9B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EACxB,KAAK,EAAE,UAAU,EACjB,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;IACV,6BAA6B,EAAE,CAAC,IAAI,EAAE;QACpC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;KACtD,KAAK,IAAI,CAAC;IACX,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IAClE,sBAAsB,EAAE,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAC/B,UAAU,GAAG,SAAS,CAAC;IAC5B,qBAAqB,EAAE,CACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAC3B,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sBAAsB,EAAE,CACtB,WAAW,EAAE,MAAM,KAChB,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5B,4BAA4B,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC1E,yBAAyB,EAAE,CACzB,SAAS,EAAE,kBAAkB,KAC1B,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,4BAA4B,EAAE,CAC5B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,MAAM,KACf,kBAAkB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9D;gCAaoC,OAAO,gBAAgB,MAAM;gDAocP;QACvD,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,KAAG,OAAO,CAAC,gBAAgB,CAAC;+CA6K2B;QACtD,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,KAAG,OAAO,CAAC,gBAAgB,CAAC;uDAySd,MAAM,KAClB,KAAK,CAAC,gBAAgB,CAAC;sDA+EX,MAAM,SACZ,MAAM,KACZ,gBAAgB,GAAG,SAAS;4CAMgB;QAC7C,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACxB,KAAG;QACF,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,gBAAgB,CAAC;KACvB;+CA5CuD;QACtD,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,KAAG,OAAO,CAAC,gBAAgB,CAAC;iCAqKE,MAAM;oDAtnCtB,MAAM,KAClB,eAAe,GAAG,SAAS;;;;;CA4nC/B,CAAC"}