@bolt-foundry/gambit 0.8.6-rc.5 → 0.8.6-rc.7

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 (262) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/gambit/simulator-ui/dist/bundle.js +14226 -23324
  3. package/esm/gambit/simulator-ui/dist/bundle.js.map +4 -4
  4. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.d.ts.map +1 -1
  5. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.js +5 -0
  6. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts +1 -1
  7. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts.map +1 -1
  8. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.js +1 -0
  9. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts +1 -0
  10. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts.map +1 -1
  11. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.d.ts.map +1 -1
  12. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.js +5 -0
  13. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts +1 -1
  14. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts.map +1 -1
  15. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.js +1 -0
  16. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts +1 -0
  17. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts.map +1 -1
  18. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.d.ts.map +1 -1
  19. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.js +5 -0
  20. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts +1 -1
  21. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts.map +1 -1
  22. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.js +1 -0
  23. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts +1 -0
  24. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts.map +1 -1
  25. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.d.ts.map +1 -1
  26. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.js +5 -0
  27. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts +1 -1
  28. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts.map +1 -1
  29. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.js +1 -0
  30. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts +1 -0
  31. package/esm/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts.map +1 -1
  32. package/esm/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts +65 -0
  33. package/esm/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts.map +1 -1
  34. package/esm/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.d.ts.map +1 -1
  35. package/esm/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.js +8 -1
  36. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts +82 -0
  37. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts.map +1 -1
  38. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.d.ts.map +1 -1
  39. package/esm/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.js +8 -1
  40. package/esm/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts +106 -0
  41. package/esm/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts.map +1 -1
  42. package/esm/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.d.ts.map +1 -1
  43. package/esm/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.js +8 -1
  44. package/esm/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts +32 -0
  45. package/esm/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts.map +1 -1
  46. package/esm/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.d.ts.map +1 -1
  47. package/esm/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.js +8 -1
  48. package/esm/simulator-ui/isograph/components/Query/SimulatorBuildPage.d.ts.map +1 -1
  49. package/esm/simulator-ui/isograph/components/Query/SimulatorBuildPage.js +4 -11
  50. package/esm/simulator-ui/isograph/components/Query/SimulatorGradePage.d.ts.map +1 -1
  51. package/esm/simulator-ui/isograph/components/Query/SimulatorGradePage.js +79 -20
  52. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  53. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.js +88 -27
  54. package/esm/simulator-ui/isograph/components/Query/SimulatorVerifyPage.d.ts.map +1 -1
  55. package/esm/simulator-ui/isograph/components/Query/SimulatorVerifyPage.js +31 -17
  56. package/esm/simulator-ui/isograph/components/Query/SimulatorWorkspacesPage.d.ts.map +1 -1
  57. package/esm/simulator-ui/isograph/components/Query/SimulatorWorkspacesPage.js +2 -6
  58. package/esm/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.d.ts.map +1 -1
  59. package/esm/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.js +27 -23
  60. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts +3 -0
  61. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts.map +1 -1
  62. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.js +76 -50
  63. package/esm/simulator-ui/isograph/components/grade/GradeTabView.d.ts +14 -0
  64. package/esm/simulator-ui/isograph/components/grade/GradeTabView.d.ts.map +1 -1
  65. package/esm/simulator-ui/isograph/components/grade/GradeTabView.js +1 -1
  66. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorRedirect.d.ts.map +1 -1
  67. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorRedirect.js +3 -16
  68. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.d.ts.map +1 -1
  69. package/esm/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.js +1 -9
  70. package/esm/simulator-ui/src/AppShell.d.ts.map +1 -1
  71. package/esm/simulator-ui/src/AppShell.js +21 -31
  72. package/esm/simulator-ui/src/Chat.d.ts +6 -30
  73. package/esm/simulator-ui/src/Chat.d.ts.map +1 -1
  74. package/esm/simulator-ui/src/Chat.js +14 -109
  75. package/esm/simulator-ui/src/MinimalRouterRoot.d.ts.map +1 -1
  76. package/esm/simulator-ui/src/MinimalRouterRoot.js +1 -16
  77. package/esm/simulator-ui/src/TestBotChatPanel.d.ts +2 -0
  78. package/esm/simulator-ui/src/TestBotChatPanel.d.ts.map +1 -1
  79. package/esm/simulator-ui/src/TestBotChatPanel.js +2 -2
  80. package/esm/simulator-ui/src/WorkbenchChatIntro.d.ts +10 -0
  81. package/esm/simulator-ui/src/WorkbenchChatIntro.d.ts.map +1 -0
  82. package/esm/simulator-ui/src/WorkbenchChatIntro.js +24 -0
  83. package/esm/simulator-ui/src/WorkbenchDrawerIso.d.ts +1 -0
  84. package/esm/simulator-ui/src/WorkbenchDrawerIso.d.ts.map +1 -1
  85. package/esm/simulator-ui/src/WorkbenchDrawerIso.js +3 -15
  86. package/esm/simulator-ui/src/gds/WorkbenchComposerChip.d.ts +2 -17
  87. package/esm/simulator-ui/src/gds/WorkbenchComposerChip.d.ts.map +1 -1
  88. package/esm/simulator-ui/src/grade/GradeResultsPanel.d.ts +10 -0
  89. package/esm/simulator-ui/src/grade/GradeResultsPanel.d.ts.map +1 -1
  90. package/esm/simulator-ui/src/grade/GradeResultsPanel.js +16 -1
  91. package/esm/simulator-ui/src/routing.d.ts.map +1 -1
  92. package/esm/simulator-ui/src/routing.js +0 -31
  93. package/esm/simulator-ui/src/shared.d.ts +1 -0
  94. package/esm/simulator-ui/src/shared.d.ts.map +1 -1
  95. package/esm/simulator-ui/src/shared.js +4 -2
  96. package/esm/simulator-ui/src/styles.d.ts +1 -1
  97. package/esm/simulator-ui/src/styles.d.ts.map +1 -1
  98. package/esm/simulator-ui/src/styles.js +65 -0
  99. package/esm/simulator-ui/src/utils.d.ts +1 -0
  100. package/esm/simulator-ui/src/utils.d.ts.map +1 -1
  101. package/esm/simulator-ui/src/utils.js +2 -0
  102. package/esm/simulator-ui/src/workbenchChipStore.d.ts +12 -0
  103. package/esm/simulator-ui/src/workbenchChipStore.d.ts.map +1 -0
  104. package/esm/simulator-ui/src/workbenchChipStore.js +69 -0
  105. package/esm/simulator-ui/src/workbenchContext.d.ts +50 -0
  106. package/esm/simulator-ui/src/workbenchContext.d.ts.map +1 -0
  107. package/esm/simulator-ui/src/workbenchContext.js +159 -0
  108. package/esm/src/server/request_handler.d.ts.map +1 -1
  109. package/esm/src/server/request_handler.js +0 -40
  110. package/esm/src/server.js +1 -1
  111. package/esm/src/server_legacy_api_routes.d.ts +2 -122
  112. package/esm/src/server_legacy_api_routes.d.ts.map +1 -1
  113. package/esm/src/server_legacy_api_routes.js +0 -591
  114. package/esm/src/server_simulator_ui.d.ts.map +1 -1
  115. package/esm/src/server_simulator_ui.js +34 -0
  116. package/esm/src/server_ui_routes.d.ts.map +1 -1
  117. package/esm/src/server_ui_routes.js +0 -2
  118. package/esm/src/server_workspace_graphql.d.ts +1 -1
  119. package/esm/src/server_workspace_graphql.d.ts.map +1 -1
  120. package/esm/src/server_workspace_graphql.js +66 -46
  121. package/esm/src/simulator_graphql.d.ts.map +1 -1
  122. package/esm/src/simulator_graphql.js +5 -0
  123. package/package.json +1 -1
  124. package/script/gambit/simulator-ui/dist/bundle.js +14226 -23324
  125. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  126. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.d.ts.map +1 -1
  127. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.js +5 -0
  128. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts +1 -1
  129. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts.map +1 -1
  130. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.js +1 -0
  131. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts +1 -0
  132. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts.map +1 -1
  133. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.d.ts.map +1 -1
  134. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.js +5 -0
  135. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts +1 -1
  136. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts.map +1 -1
  137. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.js +1 -0
  138. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts +1 -0
  139. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts.map +1 -1
  140. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.d.ts.map +1 -1
  141. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.js +5 -0
  142. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts +1 -1
  143. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts.map +1 -1
  144. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.js +1 -0
  145. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts +1 -0
  146. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts.map +1 -1
  147. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.d.ts.map +1 -1
  148. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.js +5 -0
  149. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts +1 -1
  150. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts.map +1 -1
  151. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.js +1 -0
  152. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts +1 -0
  153. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts.map +1 -1
  154. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts +65 -0
  155. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts.map +1 -1
  156. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.d.ts.map +1 -1
  157. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.js +8 -1
  158. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts +82 -0
  159. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts.map +1 -1
  160. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.d.ts.map +1 -1
  161. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.js +8 -1
  162. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts +106 -0
  163. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts.map +1 -1
  164. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.d.ts.map +1 -1
  165. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.js +8 -1
  166. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts +32 -0
  167. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts.map +1 -1
  168. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.d.ts.map +1 -1
  169. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.js +8 -1
  170. package/script/simulator-ui/isograph/components/Query/SimulatorBuildPage.d.ts.map +1 -1
  171. package/script/simulator-ui/isograph/components/Query/SimulatorBuildPage.js +4 -11
  172. package/script/simulator-ui/isograph/components/Query/SimulatorGradePage.d.ts.map +1 -1
  173. package/script/simulator-ui/isograph/components/Query/SimulatorGradePage.js +112 -20
  174. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  175. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.js +121 -27
  176. package/script/simulator-ui/isograph/components/Query/SimulatorVerifyPage.d.ts.map +1 -1
  177. package/script/simulator-ui/isograph/components/Query/SimulatorVerifyPage.js +31 -17
  178. package/script/simulator-ui/isograph/components/Query/SimulatorWorkspacesPage.d.ts.map +1 -1
  179. package/script/simulator-ui/isograph/components/Query/SimulatorWorkspacesPage.js +2 -6
  180. package/script/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.d.ts.map +1 -1
  181. package/script/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.js +26 -22
  182. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts +3 -0
  183. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts.map +1 -1
  184. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.js +75 -49
  185. package/script/simulator-ui/isograph/components/grade/GradeTabView.d.ts +14 -0
  186. package/script/simulator-ui/isograph/components/grade/GradeTabView.d.ts.map +1 -1
  187. package/script/simulator-ui/isograph/components/grade/GradeTabView.js +1 -1
  188. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorRedirect.d.ts.map +1 -1
  189. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorRedirect.js +3 -16
  190. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.d.ts.map +1 -1
  191. package/script/simulator-ui/isograph/entrypoints/EntrypointSimulatorWorkspaceShell.js +1 -9
  192. package/script/simulator-ui/src/AppShell.d.ts.map +1 -1
  193. package/script/simulator-ui/src/AppShell.js +21 -31
  194. package/script/simulator-ui/src/Chat.d.ts +6 -30
  195. package/script/simulator-ui/src/Chat.d.ts.map +1 -1
  196. package/script/simulator-ui/src/Chat.js +14 -109
  197. package/script/simulator-ui/src/MinimalRouterRoot.d.ts.map +1 -1
  198. package/script/simulator-ui/src/MinimalRouterRoot.js +1 -16
  199. package/script/simulator-ui/src/TestBotChatPanel.d.ts +2 -0
  200. package/script/simulator-ui/src/TestBotChatPanel.d.ts.map +1 -1
  201. package/script/simulator-ui/src/TestBotChatPanel.js +2 -2
  202. package/script/simulator-ui/src/WorkbenchChatIntro.d.ts +10 -0
  203. package/script/simulator-ui/src/WorkbenchChatIntro.d.ts.map +1 -0
  204. package/script/simulator-ui/src/WorkbenchChatIntro.js +30 -0
  205. package/script/simulator-ui/src/WorkbenchDrawerIso.d.ts +1 -0
  206. package/script/simulator-ui/src/WorkbenchDrawerIso.d.ts.map +1 -1
  207. package/script/simulator-ui/src/WorkbenchDrawerIso.js +3 -15
  208. package/script/simulator-ui/src/gds/WorkbenchComposerChip.d.ts +2 -17
  209. package/script/simulator-ui/src/gds/WorkbenchComposerChip.d.ts.map +1 -1
  210. package/script/simulator-ui/src/grade/GradeResultsPanel.d.ts +10 -0
  211. package/script/simulator-ui/src/grade/GradeResultsPanel.d.ts.map +1 -1
  212. package/script/simulator-ui/src/grade/GradeResultsPanel.js +16 -1
  213. package/script/simulator-ui/src/routing.d.ts.map +1 -1
  214. package/script/simulator-ui/src/routing.js +0 -31
  215. package/script/simulator-ui/src/shared.d.ts +1 -0
  216. package/script/simulator-ui/src/shared.d.ts.map +1 -1
  217. package/script/simulator-ui/src/shared.js +4 -2
  218. package/script/simulator-ui/src/styles.d.ts +1 -1
  219. package/script/simulator-ui/src/styles.d.ts.map +1 -1
  220. package/script/simulator-ui/src/styles.js +65 -0
  221. package/script/simulator-ui/src/utils.d.ts +1 -0
  222. package/script/simulator-ui/src/utils.d.ts.map +1 -1
  223. package/script/simulator-ui/src/utils.js +3 -1
  224. package/script/simulator-ui/src/workbenchChipStore.d.ts +12 -0
  225. package/script/simulator-ui/src/workbenchChipStore.d.ts.map +1 -0
  226. package/script/simulator-ui/src/workbenchChipStore.js +108 -0
  227. package/script/simulator-ui/src/workbenchContext.d.ts +50 -0
  228. package/script/simulator-ui/src/workbenchContext.d.ts.map +1 -0
  229. package/script/simulator-ui/src/workbenchContext.js +165 -0
  230. package/script/src/server/request_handler.d.ts.map +1 -1
  231. package/script/src/server/request_handler.js +0 -40
  232. package/script/src/server.js +1 -1
  233. package/script/src/server_legacy_api_routes.d.ts +2 -122
  234. package/script/src/server_legacy_api_routes.d.ts.map +1 -1
  235. package/script/src/server_legacy_api_routes.js +0 -624
  236. package/script/src/server_simulator_ui.d.ts.map +1 -1
  237. package/script/src/server_simulator_ui.js +34 -0
  238. package/script/src/server_ui_routes.d.ts.map +1 -1
  239. package/script/src/server_ui_routes.js +0 -2
  240. package/script/src/server_workspace_graphql.d.ts +1 -1
  241. package/script/src/server_workspace_graphql.d.ts.map +1 -1
  242. package/script/src/server_workspace_graphql.js +66 -46
  243. package/script/src/simulator_graphql.d.ts.map +1 -1
  244. package/script/src/simulator_graphql.js +5 -0
  245. package/esm/simulator-ui/src/ProviderLoginPanel.d.ts +0 -8
  246. package/esm/simulator-ui/src/ProviderLoginPanel.d.ts.map +0 -1
  247. package/esm/simulator-ui/src/ProviderLoginPanel.js +0 -156
  248. package/esm/simulator-ui/src/WorkbenchDrawer.d.ts +0 -38
  249. package/esm/simulator-ui/src/WorkbenchDrawer.d.ts.map +0 -1
  250. package/esm/simulator-ui/src/WorkbenchDrawer.js +0 -716
  251. package/esm/simulator-ui/src/gds/Accordion.d.ts +0 -19
  252. package/esm/simulator-ui/src/gds/Accordion.d.ts.map +0 -1
  253. package/esm/simulator-ui/src/gds/Accordion.js +0 -47
  254. package/script/simulator-ui/src/ProviderLoginPanel.d.ts +0 -8
  255. package/script/simulator-ui/src/ProviderLoginPanel.d.ts.map +0 -1
  256. package/script/simulator-ui/src/ProviderLoginPanel.js +0 -162
  257. package/script/simulator-ui/src/WorkbenchDrawer.d.ts +0 -38
  258. package/script/simulator-ui/src/WorkbenchDrawer.d.ts.map +0 -1
  259. package/script/simulator-ui/src/WorkbenchDrawer.js +0 -722
  260. package/script/simulator-ui/src/gds/Accordion.d.ts +0 -19
  261. package/script/simulator-ui/src/gds/Accordion.d.ts.map +0 -1
  262. package/script/simulator-ui/src/gds/Accordion.js +0 -86
@@ -1,722 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = WorkbenchDrawer;
7
- const react_1 = require("react");
8
- const workspace_contract_js_1 = require("../../src/workspace_contract.js");
9
- const Button_js_1 = __importDefault(require("./gds/Button.js"));
10
- const Badge_js_1 = __importDefault(require("./gds/Badge.js"));
11
- const Icon_js_1 = __importDefault(require("./gds/Icon.js"));
12
- const ScrollingText_js_1 = __importDefault(require("./gds/ScrollingText.js"));
13
- const Callout_js_1 = __importDefault(require("./gds/Callout.js"));
14
- const Chat_js_1 = __importDefault(require("./Chat.js"));
15
- const Accordion_js_1 = __importDefault(require("./gds/Accordion.js"));
16
- const Listbox_js_1 = __importDefault(require("./gds/Listbox.js"));
17
- const CodexLoginRequiredOverlay_js_1 = __importDefault(require("./CodexLoginRequiredOverlay.js"));
18
- const BuildChatContext_js_1 = require("./BuildChatContext.js");
19
- const List_js_1 = __importDefault(require("./gds/List.js"));
20
- const ListItem_js_1 = __importDefault(require("./gds/ListItem.js"));
21
- const ProviderLoginPanel_js_1 = __importDefault(require("./ProviderLoginPanel.js"));
22
- const utils_js_1 = require("./utils.js");
23
- const initialCodexOverlayState = {
24
- copiedCodexLoginCommand: false,
25
- codexLoginRecheckPending: false,
26
- showCodexLoginRecheck: false,
27
- codexAutoRecheckActive: false,
28
- codexWorkspaceLoggedIn: null,
29
- codexLoginError: null,
30
- codexLoginStatusText: null,
31
- codexLoginOverlayDismissed: false,
32
- };
33
- function codexOverlayReducer(state, action) {
34
- switch (action.type) {
35
- case "reset_for_session":
36
- return initialCodexOverlayState;
37
- case "status_fetch_start":
38
- return {
39
- ...state,
40
- codexLoginError: null,
41
- };
42
- case "status_fetch_success":
43
- return {
44
- ...state,
45
- codexWorkspaceLoggedIn: action.loggedIn,
46
- codexLoginStatusText: action.statusText,
47
- showCodexLoginRecheck: action.loggedIn
48
- ? false
49
- : state.showCodexLoginRecheck,
50
- codexAutoRecheckActive: action.loggedIn
51
- ? false
52
- : state.codexAutoRecheckActive,
53
- };
54
- case "status_fetch_error":
55
- return {
56
- ...state,
57
- codexWorkspaceLoggedIn: null,
58
- codexLoginStatusText: null,
59
- codexLoginError: action.error,
60
- };
61
- case "copy_login_command":
62
- return {
63
- ...state,
64
- copiedCodexLoginCommand: true,
65
- showCodexLoginRecheck: true,
66
- codexAutoRecheckActive: true,
67
- };
68
- case "clear_copied_login_command":
69
- return {
70
- ...state,
71
- copiedCodexLoginCommand: false,
72
- };
73
- case "start_recheck":
74
- return {
75
- ...state,
76
- codexLoginRecheckPending: true,
77
- codexLoginError: null,
78
- };
79
- case "finish_recheck":
80
- return {
81
- ...state,
82
- codexLoginRecheckPending: false,
83
- };
84
- case "show_recheck":
85
- return {
86
- ...state,
87
- showCodexLoginRecheck: true,
88
- };
89
- case "dismiss_overlay":
90
- return {
91
- ...state,
92
- codexLoginOverlayDismissed: true,
93
- codexAutoRecheckActive: false,
94
- };
95
- default:
96
- return state;
97
- }
98
- }
99
- function WorkbenchDrawer(props) {
100
- const { run, chatSending, resetChat, loadChat, buildChatProvider, setBuildChatProvider, } = (0, BuildChatContext_js_1.useBuildChat)();
101
- const { open = true, onClose, statePath, loading = false, error = null, sessionId, messages, sessionDetail, feedbackItems, gradingFlags, runLabelById = new Map(), runItemByRefId = new Map(), composerChips = [], onComposerChipsChange, } = props;
102
- const [chatHistoryOpen, setChatHistoryOpen] = (0, react_1.useState)(false);
103
- const [chatHistory, setChatHistory] = (0, react_1.useState)([]);
104
- const [chatHistoryLoading, setChatHistoryLoading] = (0, react_1.useState)(false);
105
- const [chatHistoryError, setChatHistoryError] = (0, react_1.useState)(null);
106
- const [copiedStatePath, setCopiedStatePath] = (0, react_1.useState)(false);
107
- const [codexOverlayState, dispatchCodexOverlay] = (0, react_1.useReducer)(codexOverlayReducer, initialCodexOverlayState);
108
- const { copiedCodexLoginCommand, codexLoginRecheckPending, showCodexLoginRecheck, codexAutoRecheckActive, codexWorkspaceLoggedIn, codexLoginError, codexLoginStatusText, codexLoginOverlayDismissed, } = codexOverlayState;
109
- const initializedChipTrackingRef = (0, react_1.useRef)(false);
110
- const seenRatingChipIdsRef = (0, react_1.useRef)(new Set());
111
- const seenFlagChipIdsRef = (0, react_1.useRef)(new Set());
112
- const buildProviderOptions = (0, react_1.useMemo)(() => [
113
- { value: "codex-cli", label: "Codex" },
114
- { value: "claude-code-cli", label: "Claude Code" },
115
- ], []);
116
- const codexLoginCommand = "codex login";
117
- const codexWorkspaceId = sessionId ?? run.id;
118
- const codexStatusEndpoint = codexWorkspaceId
119
- ? `/api/codex/trust-workspace?workspaceId=${encodeURIComponent(codexWorkspaceId)}`
120
- : "/api/codex/trust-workspace";
121
- const showCodexLoginOverlay = (codexWorkspaceLoggedIn === false &&
122
- !codexLoginOverlayDismissed) || Boolean(codexLoginError);
123
- const resolvedStatePath = (0, react_1.useMemo)(() => {
124
- if (statePath)
125
- return statePath;
126
- const meta = sessionDetail?.meta;
127
- if (meta && typeof meta === "object") {
128
- const sessionStatePath = meta
129
- .sessionStatePath;
130
- if (typeof sessionStatePath === "string") {
131
- return sessionStatePath;
132
- }
133
- }
134
- return null;
135
- }, [sessionDetail?.meta, statePath]);
136
- const resolvedFeedbackItems = (0, react_1.useMemo)(() => {
137
- if (sessionDetail) {
138
- const feedback = sessionDetail.feedback ?? [];
139
- const refs = sessionDetail.messageRefs ?? [];
140
- const messages = sessionDetail.messages ?? [];
141
- const messageByRefId = new Map();
142
- const roleByRefId = new Map();
143
- refs.forEach((ref, index) => {
144
- if (!ref?.id)
145
- return;
146
- const message = messages[index];
147
- if (message) {
148
- messageByRefId.set(ref.id, message);
149
- }
150
- if (ref.role)
151
- roleByRefId.set(ref.id, ref.role);
152
- });
153
- const items = feedback.map((entry) => {
154
- const message = messageByRefId.get(entry.messageRefId);
155
- const role = message?.role ?? roleByRefId.get(entry.messageRefId);
156
- return { entry, message, role };
157
- });
158
- return items.sort((a, b) => {
159
- const aKey = a.entry.createdAt ?? "";
160
- const bKey = b.entry.createdAt ?? "";
161
- return bKey.localeCompare(aKey);
162
- });
163
- }
164
- if (feedbackItems !== undefined)
165
- return feedbackItems;
166
- if (!messages?.length)
167
- return [];
168
- const items = [];
169
- messages.forEach((message, index) => {
170
- if (!message?.feedback)
171
- return;
172
- items.push({
173
- entry: message.feedback,
174
- message: { content: message.content },
175
- role: message.role,
176
- _sortIndex: index,
177
- });
178
- });
179
- return items.sort((a, b) => {
180
- const aKey = a.entry.createdAt ?? "";
181
- const bKey = b.entry.createdAt ?? "";
182
- if (aKey && bKey && aKey !== bKey) {
183
- return bKey.localeCompare(aKey);
184
- }
185
- return (b._sortIndex ?? 0) - (a._sortIndex ?? 0);
186
- });
187
- }, [feedbackItems, messages, sessionDetail]);
188
- const resolvedGradingFlags = (0, react_1.useMemo)(() => {
189
- if (sessionDetail) {
190
- return (0, utils_js_1.extractGradingFlags)(sessionDetail.meta);
191
- }
192
- return gradingFlags ?? [];
193
- }, [gradingFlags, sessionDetail]);
194
- const resolvedRunLabelById = (0, react_1.useMemo)(() => {
195
- if (runLabelById.size > 0)
196
- return runLabelById;
197
- const meta = sessionDetail?.meta;
198
- const runs = meta && typeof meta === "object"
199
- ? meta.gradingRuns
200
- : undefined;
201
- if (!Array.isArray(runs))
202
- return runLabelById;
203
- const map = new Map();
204
- runs.forEach((run) => {
205
- if (!run || typeof run !== "object")
206
- return;
207
- const record = run;
208
- if (typeof record.id !== "string")
209
- return;
210
- const label = typeof record.graderLabel === "string"
211
- ? record.graderLabel
212
- : typeof record.graderId === "string"
213
- ? record.graderId
214
- : record.id;
215
- map.set(record.id, label);
216
- });
217
- return map;
218
- }, [runLabelById, sessionDetail]);
219
- const resolvedRunItemByRefId = (0, react_1.useMemo)(() => {
220
- if (runItemByRefId.size > 0)
221
- return runItemByRefId;
222
- const meta = sessionDetail?.meta;
223
- const runs = meta && typeof meta === "object"
224
- ? meta.gradingRuns
225
- : undefined;
226
- if (!Array.isArray(runs))
227
- return runItemByRefId;
228
- const map = new Map();
229
- runs.forEach((run) => {
230
- if (!run || typeof run !== "object")
231
- return;
232
- const record = run;
233
- if (typeof record.id !== "string")
234
- return;
235
- const result = record.result;
236
- if (result &&
237
- typeof result === "object" &&
238
- result.mode === "turns" &&
239
- Array.isArray(result.turns)) {
240
- const turns = result
241
- .turns;
242
- turns.forEach((turn, idx) => {
243
- const index = typeof turn.index === "number" ? turn.index : idx;
244
- map.set(`gradingRun:${record.id}#turn:${index}`, {
245
- turnNumber: index + 1,
246
- input: turn.input,
247
- result: turn.result,
248
- });
249
- });
250
- }
251
- else {
252
- map.set(`gradingRun:${record.id}`, {
253
- input: record.input,
254
- result: record.result,
255
- });
256
- }
257
- });
258
- return map;
259
- }, [runItemByRefId, sessionDetail]);
260
- const mergeComposerChip = (0, react_1.useCallback)((base, chip) => {
261
- const next = [...base];
262
- const existingIndex = next.findIndex((entry) => entry.chipId === chip.chipId);
263
- if (existingIndex >= 0) {
264
- next[existingIndex] = {
265
- ...next[existingIndex],
266
- ...chip,
267
- enabled: true,
268
- };
269
- return next;
270
- }
271
- next.push(chip);
272
- return next;
273
- }, []);
274
- const addComposerChip = (0, react_1.useCallback)((chip) => {
275
- if (!onComposerChipsChange)
276
- return;
277
- onComposerChipsChange(mergeComposerChip(composerChips, chip));
278
- }, [composerChips, mergeComposerChip, onComposerChipsChange]);
279
- const removeComposerChip = (0, react_1.useCallback)((chipId) => {
280
- if (!onComposerChipsChange)
281
- return;
282
- onComposerChipsChange(composerChips.filter((chip) => chip.chipId !== chipId));
283
- }, [composerChips, onComposerChipsChange]);
284
- const composerChipIds = (0, react_1.useMemo)(() => new Set(composerChips.map((chip) => chip.chipId)), [composerChips]);
285
- const buildRatingChip = (0, react_1.useCallback)((entry) => {
286
- const capturedAt = entry.createdAt ?? new Date().toISOString();
287
- return {
288
- chipId: `rating:${entry.messageRefId}:${entry.id}`,
289
- source: "message_rating",
290
- workspaceId: sessionId ?? undefined,
291
- runId: entry.runId,
292
- capturedAt,
293
- messageRefId: entry.messageRefId,
294
- statePath: resolvedStatePath ?? undefined,
295
- statePointer: `messageRef:${entry.messageRefId}`,
296
- score: entry.score,
297
- reason: entry.reason,
298
- enabled: true,
299
- };
300
- }, [resolvedStatePath, sessionId]);
301
- const resolveFlagMessage = (0, react_1.useCallback)((flag) => {
302
- if (flag.reason?.trim())
303
- return flag.reason;
304
- const flaggedItem = resolvedRunItemByRefId.get(flag.refId);
305
- const gradedAssistant = (0, utils_js_1.extractTurnContext)(flaggedItem?.input).gradedAssistant;
306
- if (gradedAssistant?.trim())
307
- return (0, utils_js_1.formatSnippet)(gradedAssistant);
308
- return "Flagged by grader";
309
- }, [resolvedRunItemByRefId]);
310
- const buildFlagChip = (0, react_1.useCallback)((flag) => {
311
- const capturedAt = flag.createdAt ?? new Date().toISOString();
312
- return {
313
- // Use refId so optimistic and persisted updates collapse to one chip.
314
- chipId: `flag:${flag.refId}`,
315
- source: "grading_flag",
316
- workspaceId: sessionId ?? undefined,
317
- runId: flag.runId,
318
- capturedAt,
319
- flagId: flag.id,
320
- refId: flag.refId,
321
- score: (0, utils_js_1.extractScoreAndReason)(resolvedRunItemByRefId.get(flag.refId)?.result)
322
- .score,
323
- message: resolveFlagMessage(flag),
324
- enabled: true,
325
- };
326
- }, [resolveFlagMessage, resolvedRunItemByRefId, sessionId]);
327
- (0, react_1.useEffect)(() => {
328
- initializedChipTrackingRef.current = false;
329
- seenRatingChipIdsRef.current.clear();
330
- seenFlagChipIdsRef.current.clear();
331
- dispatchCodexOverlay({ type: "reset_for_session" });
332
- }, [sessionId]);
333
- (0, react_1.useEffect)(() => {
334
- if (!open)
335
- return;
336
- let canceled = false;
337
- dispatchCodexOverlay({ type: "status_fetch_start" });
338
- fetch(codexStatusEndpoint)
339
- .then(async (response) => {
340
- const payload = await response.json();
341
- if (!response.ok || payload.ok === false) {
342
- throw new Error(payload.error || response.statusText);
343
- }
344
- if (canceled)
345
- return;
346
- dispatchCodexOverlay({
347
- type: "status_fetch_success",
348
- loggedIn: payload.codexLoggedIn === true,
349
- statusText: typeof payload.codexLoginStatus === "string"
350
- ? payload.codexLoginStatus
351
- : null,
352
- });
353
- })
354
- .catch((err) => {
355
- if (canceled)
356
- return;
357
- dispatchCodexOverlay({
358
- type: "status_fetch_error",
359
- error: err instanceof Error ? err.message : String(err),
360
- });
361
- })
362
- .finally(() => {
363
- if (canceled)
364
- return;
365
- });
366
- return () => {
367
- canceled = true;
368
- };
369
- }, [codexStatusEndpoint, open]);
370
- (0, react_1.useEffect)(() => {
371
- if (!showCodexLoginOverlay)
372
- return;
373
- if (codexWorkspaceLoggedIn !== false)
374
- return;
375
- if (showCodexLoginRecheck)
376
- return;
377
- const timeout = globalThis.setTimeout(() => {
378
- dispatchCodexOverlay({ type: "show_recheck" });
379
- }, 5000);
380
- return () => globalThis.clearTimeout(timeout);
381
- }, [codexWorkspaceLoggedIn, showCodexLoginOverlay, showCodexLoginRecheck]);
382
- (0, react_1.useEffect)(() => {
383
- if (loading)
384
- return;
385
- const currentRatingChipIds = new Set(resolvedFeedbackItems.map(({ entry }) => `rating:${entry.messageRefId}:${entry.id}`));
386
- const currentFlagChipIds = new Set(resolvedGradingFlags.map((flag) => `flag:${flag.refId}`));
387
- if (!initializedChipTrackingRef.current) {
388
- seenRatingChipIdsRef.current = currentRatingChipIds;
389
- seenFlagChipIdsRef.current = currentFlagChipIds;
390
- initializedChipTrackingRef.current = true;
391
- return;
392
- }
393
- const newRatingEntries = resolvedFeedbackItems.filter(({ entry }) => !seenRatingChipIdsRef.current.has(`rating:${entry.messageRefId}:${entry.id}`));
394
- const newFlagEntries = resolvedGradingFlags.filter((flag) => !seenFlagChipIdsRef.current.has(`flag:${flag.refId}`));
395
- if ((newRatingEntries.length > 0 || newFlagEntries.length > 0) &&
396
- onComposerChipsChange) {
397
- let nextChips = [...composerChips];
398
- newRatingEntries.forEach(({ entry }) => {
399
- nextChips = mergeComposerChip(nextChips, buildRatingChip(entry));
400
- });
401
- newFlagEntries.forEach((flag) => {
402
- nextChips = mergeComposerChip(nextChips, buildFlagChip(flag));
403
- });
404
- onComposerChipsChange(nextChips);
405
- }
406
- if (onComposerChipsChange) {
407
- const ratingByChipId = new Map(resolvedFeedbackItems.map(({ entry }) => [
408
- `rating:${entry.messageRefId}:${entry.id}`,
409
- buildRatingChip(entry),
410
- ]));
411
- const flagByChipId = new Map(resolvedGradingFlags.map((flag) => [
412
- `flag:${flag.refId}`,
413
- buildFlagChip(flag),
414
- ]));
415
- let didChange = false;
416
- const syncedChips = composerChips.filter((chip) => {
417
- if (chip.source === "message_rating") {
418
- if (!chip.chipId.startsWith("rating:"))
419
- return true;
420
- const stillExists = ratingByChipId.has(chip.chipId);
421
- if (!stillExists)
422
- didChange = true;
423
- return stillExists;
424
- }
425
- if (chip.source === "grading_flag") {
426
- if (!chip.chipId.startsWith("flag:"))
427
- return true;
428
- const stillExists = flagByChipId.has(chip.chipId);
429
- if (!stillExists)
430
- didChange = true;
431
- return stillExists;
432
- }
433
- return true;
434
- }).map((chip) => {
435
- const latest = chip.source === "message_rating" &&
436
- chip.chipId.startsWith("rating:")
437
- ? ratingByChipId.get(chip.chipId)
438
- : chip.source === "grading_flag" && chip.chipId.startsWith("flag:")
439
- ? flagByChipId.get(chip.chipId)
440
- : undefined;
441
- if (!latest)
442
- return chip;
443
- const next = { ...chip, ...latest, enabled: chip.enabled };
444
- const changed = JSON.stringify(next) !== JSON.stringify(chip);
445
- if (changed)
446
- didChange = true;
447
- return next;
448
- });
449
- if (didChange) {
450
- onComposerChipsChange(syncedChips);
451
- }
452
- }
453
- seenRatingChipIdsRef.current = currentRatingChipIds;
454
- seenFlagChipIdsRef.current = currentFlagChipIds;
455
- }, [
456
- buildFlagChip,
457
- buildRatingChip,
458
- composerChips,
459
- loading,
460
- mergeComposerChip,
461
- onComposerChipsChange,
462
- resolvedFeedbackItems,
463
- resolvedGradingFlags,
464
- ]);
465
- const loadChatHistory = (0, react_1.useCallback)(async () => {
466
- if (!utils_js_1.chatAccordionEnabled)
467
- return;
468
- setChatHistoryLoading(true);
469
- setChatHistoryError(null);
470
- try {
471
- const res = await fetch(workspace_contract_js_1.WORKSPACES_API_BASE);
472
- if (!res.ok)
473
- throw new Error(res.statusText);
474
- const data = await res.json();
475
- const runs = Array.isArray(data.workspaces)
476
- ? data.workspaces.filter((entry) => typeof entry?.id === "string").map((entry) => ({
477
- id: entry.id,
478
- updatedAt: entry.createdAt,
479
- startedAt: entry.createdAt,
480
- }))
481
- : [];
482
- setChatHistory(runs);
483
- }
484
- catch (err) {
485
- setChatHistoryError(err instanceof Error ? err.message : "Failed to load chat history");
486
- }
487
- finally {
488
- setChatHistoryLoading(false);
489
- }
490
- }, []);
491
- (0, react_1.useEffect)(() => {
492
- if (!open)
493
- return;
494
- if (!utils_js_1.chatAccordionEnabled)
495
- return;
496
- loadChatHistory().catch(() => { });
497
- }, [loadChatHistory, open]);
498
- const runStatusLabel = run.status === "running"
499
- ? "Running…"
500
- : run.status === "completed"
501
- ? "Completed"
502
- : run.status === "error"
503
- ? "Failed"
504
- : run.status === "canceled"
505
- ? "Stopped"
506
- : "Idle";
507
- const showCopyStatePath = Boolean(resolvedStatePath);
508
- const handleCopyStatePath = (0, react_1.useMemo)(() => {
509
- if (!resolvedStatePath)
510
- return null;
511
- return () => {
512
- navigator.clipboard?.writeText(resolvedStatePath);
513
- setCopiedStatePath(true);
514
- globalThis.setTimeout(() => setCopiedStatePath(false), 1200);
515
- };
516
- }, [resolvedStatePath]);
517
- const handleCopyCodexLoginCommand = (0, react_1.useCallback)(() => {
518
- navigator.clipboard?.writeText(codexLoginCommand);
519
- dispatchCodexOverlay({ type: "copy_login_command" });
520
- globalThis.setTimeout(() => {
521
- dispatchCodexOverlay({ type: "clear_copied_login_command" });
522
- }, 1200);
523
- }, [codexLoginCommand]);
524
- const handleRecheckCodexLogin = (0, react_1.useCallback)(async () => {
525
- dispatchCodexOverlay({ type: "start_recheck" });
526
- try {
527
- const response = await fetch(codexStatusEndpoint);
528
- const payload = await response.json();
529
- if (!response.ok || payload.ok === false) {
530
- throw new Error(payload.error || response.statusText);
531
- }
532
- dispatchCodexOverlay({
533
- type: "status_fetch_success",
534
- loggedIn: payload.codexLoggedIn === true,
535
- statusText: typeof payload.codexLoginStatus === "string"
536
- ? payload.codexLoginStatus
537
- : null,
538
- });
539
- }
540
- catch (err) {
541
- dispatchCodexOverlay({
542
- type: "status_fetch_error",
543
- error: err instanceof Error ? err.message : String(err),
544
- });
545
- }
546
- finally {
547
- dispatchCodexOverlay({ type: "finish_recheck" });
548
- }
549
- }, [codexStatusEndpoint]);
550
- (0, react_1.useEffect)(() => {
551
- if (!codexAutoRecheckActive)
552
- return;
553
- if (!showCodexLoginOverlay)
554
- return;
555
- if (codexWorkspaceLoggedIn !== false)
556
- return;
557
- const interval = globalThis.setInterval(() => {
558
- if (codexLoginRecheckPending)
559
- return;
560
- void handleRecheckCodexLogin();
561
- }, 2000);
562
- return () => globalThis.clearInterval(interval);
563
- }, [
564
- codexAutoRecheckActive,
565
- codexLoginRecheckPending,
566
- codexWorkspaceLoggedIn,
567
- handleRecheckCodexLogin,
568
- showCodexLoginOverlay,
569
- ]);
570
- (0, react_1.useEffect)(() => {
571
- if (!open)
572
- return;
573
- if (!onClose)
574
- return;
575
- const handler = (event) => {
576
- if (event.key === "Escape") {
577
- onClose();
578
- }
579
- };
580
- globalThis.addEventListener("keydown", handler);
581
- return () => globalThis.removeEventListener("keydown", handler);
582
- }, [onClose, open]);
583
- if (!open)
584
- return null;
585
- return (React.createElement("aside", { className: "workbench-drawer-docked", role: "dialog" },
586
- React.createElement(Accordion_js_1.default, { allowMultiple: true, className: "workbench-accordion equal-open", items: [
587
- ...(utils_js_1.chatAccordionEnabled
588
- ? [{
589
- id: "workbench-chat",
590
- title: (React.createElement("div", { className: "workbench-accordion-title" },
591
- chatHistory.length > 0 && (React.createElement("span", { role: "button", tabIndex: 0, className: "workbench-chat-history-toggle", onClick: (event) => {
592
- event.preventDefault();
593
- event.stopPropagation();
594
- setChatHistoryOpen((prev) => !prev);
595
- }, onKeyDown: (event) => {
596
- if (event.key !== "Enter" && event.key !== " ")
597
- return;
598
- event.preventDefault();
599
- event.stopPropagation();
600
- setChatHistoryOpen((prev) => !prev);
601
- }, "aria-label": chatHistoryOpen
602
- ? "Hide chat history"
603
- : "Show chat history" },
604
- React.createElement(Icon_js_1.default, { name: "chevronDown", size: 12, className: "workbench-chat-history-arrow" }))),
605
- React.createElement("span", null, "Chat"),
606
- React.createElement(Badge_js_1.default, { status: run.status }, runStatusLabel))),
607
- defaultOpen: true,
608
- contentClassName: "workbench-chat-content",
609
- headerActions: (React.createElement("div", { className: "workbench-chat-header-actions gds-accordion-open-only" },
610
- React.createElement("label", { className: "workbench-provider-select-label" },
611
- React.createElement("div", { className: "workbench-provider-select", onClick: (event) => event.stopPropagation(), onMouseDown: (event) => event.stopPropagation(), onKeyDown: (event) => event.stopPropagation() },
612
- React.createElement(Listbox_js_1.default, { value: buildChatProvider, onChange: (value) => setBuildChatProvider(value), options: buildProviderOptions, disabled: chatSending || run.status === "running", size: "small", popoverMatchTriggerWidth: false, popoverMinWidth: 200, popoverAlign: "right" }))),
613
- React.createElement(Button_js_1.default, { variant: "secondary", size: "small", onClick: (event) => {
614
- event.stopPropagation();
615
- resetChat().then(() => {
616
- loadChatHistory().catch(() => { });
617
- });
618
- }, disabled: chatSending || run.status === "running" }, "New chat"))),
619
- content: (React.createElement("div", { className: "workbench-chat-panel" },
620
- React.createElement("div", { className: "workbench-chat-overlay" },
621
- React.createElement("div", { className: "workbench-chat-history" },
622
- chatHistoryLoading && (React.createElement(Callout_js_1.default, null, "Loading chat history\u2026")),
623
- chatHistoryError && (React.createElement("div", { className: "error" }, chatHistoryError)),
624
- !chatHistoryLoading &&
625
- !chatHistoryError &&
626
- chatHistory.length === 0 && (React.createElement(Callout_js_1.default, null, "No previous chats yet.")),
627
- !chatHistoryLoading &&
628
- !chatHistoryError &&
629
- chatHistory.length > 0 && (React.createElement(List_js_1.default, { className: "workbench-chat-history-list" }, chatHistory.map((entry) => {
630
- const timestamp = entry.updatedAt ??
631
- entry.startedAt;
632
- const label = timestamp
633
- ? (0, utils_js_1.formatTimestampShort)(timestamp)
634
- : "Unknown date";
635
- return (React.createElement("button", { key: entry.id, type: "button", className: "workbench-chat-history-row gds-list-item-button", onClick: () => {
636
- setChatHistoryOpen(false);
637
- loadChat(entry.id).catch(() => { });
638
- } },
639
- React.createElement(ListItem_js_1.default, { title: `Chat - ${label}` })));
640
- })))),
641
- React.createElement("div", { className: `workbench-chat-current${chatHistoryOpen ? " is-history" : ""}` },
642
- React.createElement(ProviderLoginPanel_js_1.default, { key: `${sessionId ?? "sessionless"}:${buildChatProvider}`, open: open, buildChatProvider: buildChatProvider, workspaceId: (sessionId ?? run.id) || undefined }),
643
- showCodexLoginOverlay && (React.createElement(CodexLoginRequiredOverlay_js_1.default, { codexWorkspaceLoggedIn: codexWorkspaceLoggedIn, codexLoginCommand: codexLoginCommand, copiedCodexLoginCommand: copiedCodexLoginCommand, showCodexLoginRecheck: showCodexLoginRecheck, codexLoginRecheckPending: codexLoginRecheckPending, codexLoginStatusText: codexLoginStatusText, codexLoginError: codexLoginError, onCopyCodexLoginCommand: handleCopyCodexLoginCommand, onRecheckCodexLogin: () => {
644
- void handleRecheckCodexLogin();
645
- }, onDismiss: () => {
646
- dispatchCodexOverlay({ type: "dismiss_overlay" });
647
- } })),
648
- React.createElement(Chat_js_1.default, { composerChips: composerChips, onComposerChipsChange: onComposerChipsChange }))))),
649
- }]
650
- : []),
651
- {
652
- id: "workbench-ratings",
653
- title: "Ratings & flags",
654
- defaultOpen: false,
655
- content: (React.createElement("div", { className: "workbench-ratings" },
656
- showCopyStatePath && handleCopyStatePath && (React.createElement(React.Fragment, null,
657
- React.createElement(Button_js_1.default, { variant: "secondary", onClick: handleCopyStatePath },
658
- React.createElement(Icon_js_1.default, { name: copiedStatePath ? "copied" : "copy", size: 14 }),
659
- copiedStatePath ? "Copied" : "Copy state path"),
660
- React.createElement("p", { className: "workbench-button-meta" }, "Paste this in your coding assistant to debug the agent."))),
661
- loading && React.createElement(Callout_js_1.default, null, "Loading ratings and flags\u2026"),
662
- error && React.createElement("div", { className: "error" }, error),
663
- !loading &&
664
- !error &&
665
- resolvedFeedbackItems.length === 0 &&
666
- resolvedGradingFlags.length === 0 && (React.createElement(Callout_js_1.default, null, "No ratings or flags yet.")),
667
- resolvedFeedbackItems.length > 0 && (React.createElement("div", { className: "workbench-summary-list" }, resolvedFeedbackItems.map(({ entry, message, role }) => {
668
- const ratingChip = buildRatingChip(entry);
669
- const inChat = composerChipIds.has(ratingChip.chipId);
670
- const roleLabel = role === "assistant"
671
- ? "Assistant message"
672
- : "Scenario message";
673
- const displayScore = entry.score;
674
- const scoreLabel = displayScore > 0
675
- ? `+${displayScore}`
676
- : displayScore;
677
- const scoreClass = (0, utils_js_1.getScoreClass)(displayScore);
678
- return (React.createElement("div", { key: `${entry.id}-${entry.messageRefId}`, className: "workbench-summary-card" },
679
- React.createElement("div", { className: "workbench-summary-title", title: entry.createdAt &&
680
- (0, utils_js_1.formatTimestampShort)(entry.createdAt) }, roleLabel),
681
- React.createElement("div", { className: "workbench-summary-score-row" },
682
- React.createElement("div", { className: `workbench-score-badge workbench-score-badge--small ${scoreClass}` }, scoreLabel),
683
- entry.reason && (React.createElement(ScrollingText_js_1.default, { as: "div", text: entry.reason, className: "workbench-summary-reason" }))),
684
- message?.content && (React.createElement(ScrollingText_js_1.default, { as: "div", text: (0, utils_js_1.formatSnippet)(message.content), className: "workbench-summary-meta" })),
685
- React.createElement("div", { className: "workbench-summary-actions" },
686
- React.createElement(Button_js_1.default, { variant: "secondary", size: "small", onClick: () => inChat
687
- ? removeComposerChip(ratingChip.chipId)
688
- : addComposerChip(ratingChip), disabled: !onComposerChipsChange }, inChat ? "Remove from chat" : "Add to chat"))));
689
- }))),
690
- resolvedGradingFlags.length > 0 && (React.createElement("div", { className: "workbench-summary-list" }, resolvedGradingFlags.map((flag) => {
691
- const flagChip = buildFlagChip(flag);
692
- const inChat = composerChipIds.has(flagChip.chipId);
693
- const runLabel = flag.runId
694
- ? resolvedRunLabelById.get(flag.runId)
695
- : undefined;
696
- const flaggedItem = resolvedRunItemByRefId.get(flag.refId);
697
- const turnLabel = flaggedItem?.turnNumber
698
- ? `Assistant turn ${flaggedItem.turnNumber}`
699
- : undefined;
700
- const gradedAssistant = (0, utils_js_1.extractTurnContext)(flaggedItem?.input).gradedAssistant;
701
- return (React.createElement("div", { key: flag.id, className: "workbench-summary-card workbench-flag-card" },
702
- React.createElement("div", { className: "workbench-summary-title" }, "Grader flag"),
703
- (runLabel || turnLabel)
704
- ? (React.createElement("div", { className: "workbench-summary-subtitle", title: flag.createdAt &&
705
- (0, utils_js_1.formatTimestampShort)(flag.createdAt) },
706
- runLabel,
707
- runLabel && turnLabel && " • ",
708
- turnLabel))
709
- : "Flagged grader",
710
- React.createElement("div", { className: "workbench-summary-score-row" },
711
- React.createElement("div", { className: "workbench-score-badge workbench-score-badge--small" },
712
- React.createElement(Icon_js_1.default, { name: "flag", size: 10 })),
713
- flag.reason && (React.createElement(ScrollingText_js_1.default, { as: "div", text: flag.reason, className: "workbench-summary-reason" }))),
714
- gradedAssistant && (React.createElement(ScrollingText_js_1.default, { as: "div", text: (0, utils_js_1.formatSnippet)(gradedAssistant), className: "workbench-summary-meta" })),
715
- React.createElement("div", { className: "workbench-summary-actions" },
716
- React.createElement(Button_js_1.default, { variant: "secondary", size: "small", onClick: () => inChat
717
- ? removeComposerChip(flagChip.chipId)
718
- : addComposerChip(flagChip), disabled: !onComposerChipsChange }, inChat ? "Remove from chat" : "Add to chat"))));
719
- }))))),
720
- },
721
- ] })));
722
- }