@bolt-foundry/gambit 0.8.6-rc.6 → 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 (194) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/esm/gambit/simulator-ui/dist/bundle.js +1304 -2405
  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/SimulatorGradePage.d.ts.map +1 -1
  49. package/esm/simulator-ui/isograph/components/Query/SimulatorGradePage.js +76 -2
  50. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  51. package/esm/simulator-ui/isograph/components/Query/SimulatorTestPage.js +80 -6
  52. package/esm/simulator-ui/isograph/components/Query/SimulatorVerifyPage.d.ts.map +1 -1
  53. package/esm/simulator-ui/isograph/components/Query/SimulatorVerifyPage.js +24 -1
  54. package/esm/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.d.ts.map +1 -1
  55. package/esm/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.js +16 -6
  56. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts +4 -0
  57. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts.map +1 -1
  58. package/esm/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.js +59 -24
  59. package/esm/simulator-ui/isograph/components/grade/GradeTabView.d.ts +14 -0
  60. package/esm/simulator-ui/isograph/components/grade/GradeTabView.d.ts.map +1 -1
  61. package/esm/simulator-ui/isograph/components/grade/GradeTabView.js +1 -1
  62. package/esm/simulator-ui/src/AppShell.d.ts.map +1 -1
  63. package/esm/simulator-ui/src/AppShell.js +6 -6
  64. package/esm/simulator-ui/src/Chat.d.ts +6 -30
  65. package/esm/simulator-ui/src/Chat.d.ts.map +1 -1
  66. package/esm/simulator-ui/src/Chat.js +14 -109
  67. package/esm/simulator-ui/src/TestBotChatPanel.d.ts +2 -0
  68. package/esm/simulator-ui/src/TestBotChatPanel.d.ts.map +1 -1
  69. package/esm/simulator-ui/src/TestBotChatPanel.js +2 -2
  70. package/esm/simulator-ui/src/WorkbenchDrawerIso.d.ts +2 -0
  71. package/esm/simulator-ui/src/WorkbenchDrawerIso.d.ts.map +1 -1
  72. package/esm/simulator-ui/src/WorkbenchDrawerIso.js +3 -1
  73. package/esm/simulator-ui/src/gds/WorkbenchComposerChip.d.ts +2 -17
  74. package/esm/simulator-ui/src/gds/WorkbenchComposerChip.d.ts.map +1 -1
  75. package/esm/simulator-ui/src/grade/GradeResultsPanel.d.ts +10 -0
  76. package/esm/simulator-ui/src/grade/GradeResultsPanel.d.ts.map +1 -1
  77. package/esm/simulator-ui/src/grade/GradeResultsPanel.js +16 -1
  78. package/esm/simulator-ui/src/shared.d.ts +1 -0
  79. package/esm/simulator-ui/src/shared.d.ts.map +1 -1
  80. package/esm/simulator-ui/src/shared.js +4 -2
  81. package/esm/simulator-ui/src/workbenchChipStore.d.ts +12 -0
  82. package/esm/simulator-ui/src/workbenchChipStore.d.ts.map +1 -0
  83. package/esm/simulator-ui/src/workbenchChipStore.js +69 -0
  84. package/esm/simulator-ui/src/workbenchContext.d.ts +50 -0
  85. package/esm/simulator-ui/src/workbenchContext.d.ts.map +1 -0
  86. package/esm/simulator-ui/src/workbenchContext.js +159 -0
  87. package/esm/src/simulator_graphql.d.ts.map +1 -1
  88. package/esm/src/simulator_graphql.js +5 -0
  89. package/package.json +1 -1
  90. package/script/gambit/simulator-ui/dist/bundle.js +1304 -2405
  91. package/script/gambit/simulator-ui/dist/bundle.js.map +4 -4
  92. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.d.ts.map +1 -1
  93. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/normalization_ast.js +5 -0
  94. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts +1 -1
  95. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.d.ts.map +1 -1
  96. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/query_text.js +1 -0
  97. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts +1 -0
  98. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorGradePage/raw_response_type.d.ts.map +1 -1
  99. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.d.ts.map +1 -1
  100. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/normalization_ast.js +5 -0
  101. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts +1 -1
  102. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.d.ts.map +1 -1
  103. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/query_text.js +1 -0
  104. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts +1 -0
  105. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorTestPage/raw_response_type.d.ts.map +1 -1
  106. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.d.ts.map +1 -1
  107. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/normalization_ast.js +5 -0
  108. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts +1 -1
  109. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.d.ts.map +1 -1
  110. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/query_text.js +1 -0
  111. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts +1 -0
  112. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorVerifyPage/raw_response_type.d.ts.map +1 -1
  113. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.d.ts.map +1 -1
  114. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/normalization_ast.js +5 -0
  115. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts +1 -1
  116. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.d.ts.map +1 -1
  117. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/query_text.js +1 -0
  118. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts +1 -0
  119. package/script/simulator-ui/__generated__/__isograph/Query/EntrypointSimulatorWorkspaceShell/raw_response_type.d.ts.map +1 -1
  120. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts +65 -0
  121. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/param_type.d.ts.map +1 -1
  122. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.d.ts.map +1 -1
  123. package/script/simulator-ui/__generated__/__isograph/Workspace/GradeTab/resolver_reader.js +8 -1
  124. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts +82 -0
  125. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/param_type.d.ts.map +1 -1
  126. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.d.ts.map +1 -1
  127. package/script/simulator-ui/__generated__/__isograph/Workspace/TestTab/resolver_reader.js +8 -1
  128. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts +106 -0
  129. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/param_type.d.ts.map +1 -1
  130. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.d.ts.map +1 -1
  131. package/script/simulator-ui/__generated__/__isograph/Workspace/VerifyTab/resolver_reader.js +8 -1
  132. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts +32 -0
  133. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/param_type.d.ts.map +1 -1
  134. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.d.ts.map +1 -1
  135. package/script/simulator-ui/__generated__/__isograph/Workspace/WorkbenchChatDrawer/resolver_reader.js +8 -1
  136. package/script/simulator-ui/isograph/components/Query/SimulatorGradePage.d.ts.map +1 -1
  137. package/script/simulator-ui/isograph/components/Query/SimulatorGradePage.js +109 -2
  138. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.d.ts.map +1 -1
  139. package/script/simulator-ui/isograph/components/Query/SimulatorTestPage.js +113 -6
  140. package/script/simulator-ui/isograph/components/Query/SimulatorVerifyPage.d.ts.map +1 -1
  141. package/script/simulator-ui/isograph/components/Query/SimulatorVerifyPage.js +24 -1
  142. package/script/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.d.ts.map +1 -1
  143. package/script/simulator-ui/isograph/components/Workspace/WorkbenchChatDrawer.js +16 -6
  144. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts +4 -0
  145. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.d.ts.map +1 -1
  146. package/script/simulator-ui/isograph/components/WorkspaceConversationRun/WorkbenchConversationRunChat.js +58 -23
  147. package/script/simulator-ui/isograph/components/grade/GradeTabView.d.ts +14 -0
  148. package/script/simulator-ui/isograph/components/grade/GradeTabView.d.ts.map +1 -1
  149. package/script/simulator-ui/isograph/components/grade/GradeTabView.js +1 -1
  150. package/script/simulator-ui/src/AppShell.d.ts.map +1 -1
  151. package/script/simulator-ui/src/AppShell.js +6 -6
  152. package/script/simulator-ui/src/Chat.d.ts +6 -30
  153. package/script/simulator-ui/src/Chat.d.ts.map +1 -1
  154. package/script/simulator-ui/src/Chat.js +14 -109
  155. package/script/simulator-ui/src/TestBotChatPanel.d.ts +2 -0
  156. package/script/simulator-ui/src/TestBotChatPanel.d.ts.map +1 -1
  157. package/script/simulator-ui/src/TestBotChatPanel.js +2 -2
  158. package/script/simulator-ui/src/WorkbenchDrawerIso.d.ts +2 -0
  159. package/script/simulator-ui/src/WorkbenchDrawerIso.d.ts.map +1 -1
  160. package/script/simulator-ui/src/WorkbenchDrawerIso.js +3 -1
  161. package/script/simulator-ui/src/gds/WorkbenchComposerChip.d.ts +2 -17
  162. package/script/simulator-ui/src/gds/WorkbenchComposerChip.d.ts.map +1 -1
  163. package/script/simulator-ui/src/grade/GradeResultsPanel.d.ts +10 -0
  164. package/script/simulator-ui/src/grade/GradeResultsPanel.d.ts.map +1 -1
  165. package/script/simulator-ui/src/grade/GradeResultsPanel.js +16 -1
  166. package/script/simulator-ui/src/shared.d.ts +1 -0
  167. package/script/simulator-ui/src/shared.d.ts.map +1 -1
  168. package/script/simulator-ui/src/shared.js +4 -2
  169. package/script/simulator-ui/src/workbenchChipStore.d.ts +12 -0
  170. package/script/simulator-ui/src/workbenchChipStore.d.ts.map +1 -0
  171. package/script/simulator-ui/src/workbenchChipStore.js +108 -0
  172. package/script/simulator-ui/src/workbenchContext.d.ts +50 -0
  173. package/script/simulator-ui/src/workbenchContext.d.ts.map +1 -0
  174. package/script/simulator-ui/src/workbenchContext.js +165 -0
  175. package/script/src/simulator_graphql.d.ts.map +1 -1
  176. package/script/src/simulator_graphql.js +5 -0
  177. package/esm/simulator-ui/src/ProviderLoginPanel.d.ts +0 -8
  178. package/esm/simulator-ui/src/ProviderLoginPanel.d.ts.map +0 -1
  179. package/esm/simulator-ui/src/ProviderLoginPanel.js +0 -156
  180. package/esm/simulator-ui/src/WorkbenchDrawer.d.ts +0 -38
  181. package/esm/simulator-ui/src/WorkbenchDrawer.d.ts.map +0 -1
  182. package/esm/simulator-ui/src/WorkbenchDrawer.js +0 -716
  183. package/esm/simulator-ui/src/gds/Accordion.d.ts +0 -19
  184. package/esm/simulator-ui/src/gds/Accordion.d.ts.map +0 -1
  185. package/esm/simulator-ui/src/gds/Accordion.js +0 -47
  186. package/script/simulator-ui/src/ProviderLoginPanel.d.ts +0 -8
  187. package/script/simulator-ui/src/ProviderLoginPanel.d.ts.map +0 -1
  188. package/script/simulator-ui/src/ProviderLoginPanel.js +0 -162
  189. package/script/simulator-ui/src/WorkbenchDrawer.d.ts +0 -38
  190. package/script/simulator-ui/src/WorkbenchDrawer.d.ts.map +0 -1
  191. package/script/simulator-ui/src/WorkbenchDrawer.js +0 -722
  192. package/script/simulator-ui/src/gds/Accordion.d.ts +0 -19
  193. package/script/simulator-ui/src/gds/Accordion.d.ts.map +0 -1
  194. package/script/simulator-ui/src/gds/Accordion.js +0 -86
@@ -22,77 +22,11 @@ const WorkbenchComposerChip_js_1 = __importDefault(require("./gds/WorkbenchCompo
22
22
  const ActivityTranscriptRows_js_1 = require("./ActivityTranscriptRows.js");
23
23
  Object.defineProperty(exports, "bucketBuildChatDisplay", { enumerable: true, get: function () { return ActivityTranscriptRows_js_1.bucketBuildChatDisplay; } });
24
24
  const BuildChatContext_js_1 = require("./BuildChatContext.js");
25
+ const workbenchContext_js_1 = require("./workbenchContext.js");
25
26
  const ERROR_CONTEXT_START_MARKER = "[gambit:error-context/v1]";
26
27
  const ERROR_CONTEXT_END_MARKER = "[/gambit:error-context/v1]";
27
28
  const WORKBENCH_CONTEXT_START_MARKER = "[gambit:workbench-context/v2]";
28
29
  const WORKBENCH_CONTEXT_END_MARKER = "[/gambit:workbench-context/v2]";
29
- function parseWorkbenchContext(value) {
30
- if (!value || typeof value !== "object" || Array.isArray(value)) {
31
- return null;
32
- }
33
- const record = value;
34
- if (typeof record.capturedAt !== "string" ||
35
- record.capturedAt.trim().length === 0) {
36
- return null;
37
- }
38
- const workspaceId = typeof record.workspaceId === "string"
39
- ? record.workspaceId
40
- : undefined;
41
- const runId = typeof record.runId === "string" ? record.runId : undefined;
42
- if (record.source === "scenario_run_error") {
43
- if (typeof record.error !== "string" || record.error.trim().length === 0) {
44
- return null;
45
- }
46
- return {
47
- source: "scenario_run_error",
48
- workspaceId,
49
- runId,
50
- capturedAt: record.capturedAt,
51
- error: record.error,
52
- };
53
- }
54
- if (record.source === "message_rating") {
55
- if (typeof record.score !== "number" || !Number.isFinite(record.score) ||
56
- typeof record.messageRefId !== "string" ||
57
- record.messageRefId.trim().length === 0) {
58
- return null;
59
- }
60
- return {
61
- source: "message_rating",
62
- workspaceId,
63
- runId,
64
- capturedAt: record.capturedAt,
65
- messageRefId: record.messageRefId,
66
- statePath: typeof record.statePath === "string"
67
- ? record.statePath
68
- : undefined,
69
- statePointer: typeof record.statePointer === "string"
70
- ? record.statePointer
71
- : undefined,
72
- score: record.score,
73
- reason: typeof record.reason === "string" ? record.reason : undefined,
74
- };
75
- }
76
- if (record.source === "grading_flag") {
77
- if (typeof record.refId !== "string" || record.refId.trim().length === 0 ||
78
- typeof record.message !== "string" || record.message.trim().length === 0) {
79
- return null;
80
- }
81
- return {
82
- source: "grading_flag",
83
- workspaceId,
84
- runId,
85
- capturedAt: record.capturedAt,
86
- flagId: typeof record.flagId === "string" ? record.flagId : undefined,
87
- refId: record.refId,
88
- score: typeof record.score === "number" && Number.isFinite(record.score)
89
- ? record.score
90
- : undefined,
91
- message: record.message,
92
- };
93
- }
94
- return null;
95
- }
96
30
  function decodeLegacyWorkbenchErrorContext(content) {
97
31
  if (typeof content !== "string")
98
32
  return null;
@@ -112,7 +46,7 @@ function decodeLegacyWorkbenchErrorContext(content) {
112
46
  catch {
113
47
  return null;
114
48
  }
115
- const context = parseWorkbenchContext(parsed);
49
+ const context = (0, workbenchContext_js_1.parseWorkbenchMessageContext)(parsed);
116
50
  if (!context || context.source !== "scenario_run_error") {
117
51
  return null;
118
52
  }
@@ -121,7 +55,7 @@ function decodeLegacyWorkbenchErrorContext(content) {
121
55
  const remainder = content.slice(markerEndIndex);
122
56
  const body = remainder.startsWith("\n") ? remainder.slice(1) : remainder;
123
57
  return {
124
- context,
58
+ context: context,
125
59
  body,
126
60
  };
127
61
  }
@@ -130,7 +64,7 @@ function encodeWorkbenchMessageWithErrorContext(message, context) {
130
64
  }
131
65
  function encodeWorkbenchMessageWithContext(message, contexts) {
132
66
  const body = message.trim();
133
- const encodedContexts = contexts.filter((context) => parseWorkbenchContext(context));
67
+ const encodedContexts = contexts.filter((context) => (0, workbenchContext_js_1.parseWorkbenchMessageContext)(context));
134
68
  if (encodedContexts.length === 0)
135
69
  return body;
136
70
  return `${WORKBENCH_CONTEXT_START_MARKER}\n${JSON.stringify(encodedContexts)}\n${WORKBENCH_CONTEXT_END_MARKER}${body ? `\n${body}` : ""}`;
@@ -141,7 +75,10 @@ function decodeWorkbenchMessageWithErrorContext(content) {
141
75
  const errorContext = decoded.contexts.find((context) => context.source === "scenario_run_error");
142
76
  if (!errorContext)
143
77
  return null;
144
- return { context: errorContext, body: decoded.body };
78
+ return {
79
+ context: errorContext,
80
+ body: decoded.body,
81
+ };
145
82
  }
146
83
  return decodeLegacyWorkbenchErrorContext(content);
147
84
  }
@@ -169,7 +106,7 @@ function decodeWorkbenchMessageWithContext(content) {
169
106
  return null;
170
107
  }
171
108
  const records = Array.isArray(parsed) ? parsed : [parsed];
172
- const contexts = records.map((record) => parseWorkbenchContext(record))
109
+ const contexts = records.map((record) => (0, workbenchContext_js_1.parseWorkbenchMessageContext)(record))
173
110
  .filter((context) => Boolean(context));
174
111
  if (contexts.length === 0)
175
112
  return null;
@@ -305,10 +242,12 @@ function ChatView(props) {
305
242
  run.messages.length === 0;
306
243
  const resolvedComposerChips = composerChips ??
307
244
  (scenarioErrorChip
308
- ? [{
245
+ ? [
246
+ {
309
247
  ...scenarioErrorChip,
310
248
  chipId: "scenario_run_error",
311
- }]
249
+ },
250
+ ]
312
251
  : []);
313
252
  const updateComposerChips = (0, react_1.useCallback)((next) => {
314
253
  if (onComposerChipsChange) {
@@ -341,41 +280,7 @@ function ChatView(props) {
341
280
  const message = chatDraft.trim();
342
281
  const activeChips = resolvedComposerChips.filter((chip) => chip.enabled);
343
282
  const activeChipIds = new Set(activeChips.map((chip) => chip.chipId));
344
- const activeContexts = activeChips
345
- .map((chip) => {
346
- if (chip.source === "scenario_run_error") {
347
- return {
348
- source: "scenario_run_error",
349
- workspaceId: chip.workspaceId,
350
- runId: chip.runId,
351
- capturedAt: chip.capturedAt,
352
- error: chip.error,
353
- };
354
- }
355
- if (chip.source === "message_rating") {
356
- return {
357
- source: "message_rating",
358
- workspaceId: chip.workspaceId,
359
- runId: chip.runId,
360
- capturedAt: chip.capturedAt,
361
- messageRefId: chip.messageRefId,
362
- statePath: chip.statePath,
363
- statePointer: chip.statePointer,
364
- score: chip.score,
365
- reason: chip.reason,
366
- };
367
- }
368
- return {
369
- source: "grading_flag",
370
- workspaceId: chip.workspaceId,
371
- runId: chip.runId,
372
- capturedAt: chip.capturedAt,
373
- flagId: chip.flagId,
374
- refId: chip.refId,
375
- score: chip.score,
376
- message: chip.message,
377
- };
378
- });
283
+ const activeContexts = activeChips.map((chip) => (0, workbenchContext_js_1.toWorkbenchMessageContext)(chip));
379
284
  if (!message && activeContexts.length === 0)
380
285
  return;
381
286
  const outboundMessage = activeContexts.length > 0
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
2
  import { type BuildDisplayMessage, type TestBotRun } from "./utils.js";
3
+ import type { FeedbackEntry } from "./utils.js";
3
4
  type Props = {
4
5
  run: TestBotRun;
5
6
  runWorkspaceId?: string;
@@ -52,6 +53,7 @@ type Props = {
52
53
  runId?: string;
53
54
  error: string;
54
55
  }) => void;
56
+ onAddFeedbackToWorkbench?: (feedback: FeedbackEntry) => void;
55
57
  };
56
58
  export default function TestBotChatPanel(props: Props): React.JSX.Element;
57
59
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TestBotChatPanel.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/TestBotChatPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EACL,KAAK,mBAAmB,EAIxB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AASpB,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,UAAU,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD,aAAa,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,CACP,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,qBAAqB,CAAC,EAAE,CACtB,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,oBAAoB,GAAG,kBAAkB,CAAC;QACnD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,KACE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,KAAK,qBAmZpD"}
1
+ {"version":3,"file":"TestBotChatPanel.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/TestBotChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ const Button_js_1 = __importDefault(require("./gds/Button.js"));
48
48
  const Badge_js_1 = __importDefault(require("./gds/Badge.js"));
49
49
  const Callout_js_1 = __importDefault(require("./gds/Callout.js"));
50
50
  function TestBotChatPanel(props) {
51
- const { run, runWorkspaceId, runStatusLabel, testChatDisplay, transcriptMessageCount, transcriptUserMessageCount, activeWorkspaceId, requestedRunNotFound, canStart, canRunPersona, hasPersonaSelection, botJsonErrorCount, deckJsonErrorCount, missingBotInput, missingDeckInit, lastInitFill, isUserStart, showStartOverlay, canStartAssistant, canSendChat, chatDraft, setChatDraft, chatError, optimisticUser, streamingUser, streamingAssistant, startRun, stopRun, handleNewChat, handleSendChat, handleStartAssistant, onScore, onReasonChange, onAddErrorToWorkbench, } = props;
51
+ const { run, runWorkspaceId, runStatusLabel, testChatDisplay, transcriptMessageCount, transcriptUserMessageCount, activeWorkspaceId, requestedRunNotFound, canStart, canRunPersona, hasPersonaSelection, botJsonErrorCount, deckJsonErrorCount, missingBotInput, missingDeckInit, lastInitFill, isUserStart, showStartOverlay, canStartAssistant, canSendChat, chatDraft, setChatDraft, chatError, optimisticUser, streamingUser, streamingAssistant, startRun, stopRun, handleNewChat, handleSendChat, handleStartAssistant, onScore, onReasonChange, onAddErrorToWorkbench, onAddFeedbackToWorkbench, } = props;
52
52
  const resolvedMessageCount = transcriptMessageCount ?? run.messages.length;
53
53
  const resolvedUserMessageCount = transcriptUserMessageCount ??
54
54
  (0, utils_js_1.countUserMessages)(run.messages);
@@ -170,7 +170,7 @@ function TestBotChatPanel(props) {
170
170
  react_1.default.createElement("summary", null, "Meta"),
171
171
  react_1.default.createElement("pre", { className: "bubble-json" }, (0, utils_js_1.formatJson)(message.respondMeta))))))
172
172
  : message.content,
173
- message.messageRefId && runWorkspaceId && (react_1.default.createElement(shared_js_1.FeedbackControls, { messageRefId: message.messageRefId, feedback: message.feedback, disabled: !message.feedbackEligible, onScore: onScore, onReasonChange: onReasonChange })))));
173
+ message.messageRefId && runWorkspaceId && (react_1.default.createElement(shared_js_1.FeedbackControls, { messageRefId: message.messageRefId, feedback: message.feedback, disabled: !message.feedbackEligible, onScore: onScore, onReasonChange: onReasonChange, onAddToWorkbench: onAddFeedbackToWorkbench })))));
174
174
  } }),
175
175
  streamingUser?.text && streamingUser.runId === run.id &&
176
176
  (streamingUser.expectedUserCount === undefined ||
@@ -10,8 +10,10 @@ type WorkbenchDrawerIsoProps = {
10
10
  runStatus?: WorkbenchChatRunStatus;
11
11
  chatBody?: React.ReactNode;
12
12
  chatHeaderActions?: React.ReactNode;
13
+ showChatHistoryToggle?: boolean;
13
14
  chatHistoryOpen?: boolean;
14
15
  chatHistoryContent?: React.ReactNode;
16
+ onToggleChatHistory?: () => void;
15
17
  };
16
18
  export default function WorkbenchDrawerIso(props: WorkbenchDrawerIsoProps): React.JSX.Element | null;
17
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchDrawerIso.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/WorkbenchDrawerIso.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACtC,CAAC;AAgCF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,4BAwDxE"}
1
+ {"version":3,"file":"WorkbenchDrawerIso.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/WorkbenchDrawerIso.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,CAAC;AAgCF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,4BA4DxE"}
@@ -35,7 +35,9 @@ function toBadgeLabel(status) {
35
35
  }
36
36
  }
37
37
  function WorkbenchDrawerIso(props) {
38
- const { open = true, runStatus = "IDLE", chatBody = null, chatHeaderActions = null, chatHistoryOpen = false, chatHistoryContent = null, } = props;
38
+ const { open = true, runStatus = "IDLE", chatBody = null, chatHeaderActions = null, showChatHistoryToggle = true, chatHistoryOpen = false, chatHistoryContent = null, onToggleChatHistory, } = props;
39
+ void showChatHistoryToggle;
40
+ void onToggleChatHistory;
39
41
  const hasChatHistory = chatHistoryContent !== null;
40
42
  if (!open)
41
43
  return null;
@@ -1,21 +1,6 @@
1
1
  import React from "react";
2
- type WorkbenchComposerChipContext = {
3
- source: "scenario_run_error" | "grader_run_error";
4
- error: string;
5
- } | {
6
- source: "message_rating";
7
- score: number;
8
- reason?: string;
9
- } | {
10
- source: "grading_flag";
11
- message: string;
12
- score?: number;
13
- } | {
14
- source: "verify_outlier";
15
- message: string;
16
- instability?: boolean;
17
- score?: number;
18
- };
2
+ import type { WorkbenchMessageContext } from "../workbenchContext.js";
3
+ type WorkbenchComposerChipContext = WorkbenchMessageContext;
19
4
  export default function WorkbenchComposerChip(props: Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & ({
20
5
  context: WorkbenchComposerChipContext;
21
6
  enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchComposerChip.d.ts","sourceRoot":"","sources":["../../../../src/simulator-ui/src/gds/WorkbenchComposerChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,KAAK,4BAA4B,GAC7B;IACA,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;CACf,GACC;IACA,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACC;IACA,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACC;IACA,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA0CJ,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GACtD,CACA;IACE,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG;IACF,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CACF,qBA0FJ"}
1
+ {"version":3,"file":"WorkbenchComposerChip.d.ts","sourceRoot":"","sources":["../../../../src/simulator-ui/src/gds/WorkbenchComposerChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,KAAK,4BAA4B,GAAG,uBAAuB,CAAC;AA0C5D,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GACtD,CACA;IACE,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG;IACF,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CACF,qBA0FJ"}
@@ -24,6 +24,16 @@ export declare function GradeResultsPanel(props: {
24
24
  }) => void;
25
25
  onFlagReasonChange: (refId: string, reason: string) => void;
26
26
  onFlagReasonBlur: (refId: string, reason: string) => void;
27
+ onAddFlagToWorkbench?: (args: {
28
+ refId: string;
29
+ runId: string;
30
+ turnIndex?: number;
31
+ score?: number;
32
+ graderReason?: string;
33
+ flagReason?: string;
34
+ priorUser?: string;
35
+ gradedAssistant?: string;
36
+ }) => void;
27
37
  onAddErrorToWorkbench?: (args: {
28
38
  runId?: string;
29
39
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GradeResultsPanel.d.ts","sourceRoot":"","sources":["../../../../src/simulator-ui/src/grade/GradeResultsPanel.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,EAAE,CACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACvD,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,+BAmaA;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"GradeResultsPanel.d.ts","sourceRoot":"","sources":["../../../../src/simulator-ui/src/grade/GradeResultsPanel.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,EAAE,CACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACvD,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,oBAAoB,CAAC,EAAE,CACrB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,KACE,IAAI,CAAC;IACV,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,+BA8bA;AAED,eAAe,iBAAiB,CAAC"}
@@ -150,7 +150,22 @@ function GradeResultsPanel(props) {
150
150
  ? "Hide raw input"
151
151
  : "Show raw input", onClick: () => props.onToggleExpandedResult(item.key) },
152
152
  React.createElement(Icon_js_1.default, { name: "circleInfo", size: 16 }),
153
- isOpen ? "Hide raw input" : "Show raw input")))),
153
+ isOpen ? "Hide raw input" : "Show raw input"),
154
+ React.createElement(Button_js_1.default, { variant: "ghost", className: "flex-1 calibrate-toggle", disabled: !props.onAddFlagToWorkbench, "data-testid": "grade-flag-add-to-chat", onClick: () => props.onAddFlagToWorkbench?.({
155
+ refId: item.refId,
156
+ runId: item.runId,
157
+ turnIndex: item.turnIndex,
158
+ score: displayScore,
159
+ graderReason: displayReason ?? undefined,
160
+ flagReason: props.flagReasonDrafts[item.refId] ??
161
+ props.flagReasonByRefId.get(item.refId)
162
+ ?.reason ??
163
+ undefined,
164
+ priorUser: turnContext.priorUser,
165
+ gradedAssistant: turnContext.gradedAssistant,
166
+ }) },
167
+ React.createElement(Icon_js_1.default, { name: "chat", size: 16 }),
168
+ "Add to chat")))),
154
169
  isFlagged && !isPending && (React.createElement("div", { className: "calibrate-flag-reason" },
155
170
  React.createElement("label", null,
156
171
  "Reason",
@@ -36,6 +36,7 @@ export declare function FeedbackControls(props: {
36
36
  disabled?: boolean;
37
37
  onScore: (messageRefId: string, score: number | null, reason?: string) => void | Promise<void>;
38
38
  onReasonChange: (messageRefId: string, score: number, reason: string) => void | Promise<void>;
39
+ onAddToWorkbench?: (feedback: FeedbackEntry) => void;
39
40
  }): import("react").JSX.Element;
40
41
  export declare function TraceList(props: {
41
42
  traces: Array<TraceEvent>;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/shared.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;;;;;EA8BnE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,EAAE,CACP,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,+BAiCA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE,CACP,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,+BAsFA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,+BAsBjE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CACP,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,+BA6KA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAAE,+BAwP7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD,+BA2EA;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACpE,+BAyGA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,OAAO,KACb,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAClE,+BAsHA"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/shared.tsx"],"names":[],"mappings":"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"}
@@ -122,7 +122,7 @@ function ReasoningBubble(props) {
122
122
  React.createElement("pre", { className: "bubble-json" }, (0, utils_js_1.formatJson)(detail.event)))));
123
123
  }
124
124
  function FeedbackControls(props) {
125
- const { messageRefId, feedback, disabled = false, onScore, onReasonChange } = props;
125
+ const { messageRefId, feedback, disabled = false, onScore, onReasonChange, onAddToWorkbench, } = props;
126
126
  const [reason, setReason] = (0, react_1.useState)(feedback?.reason ?? "");
127
127
  const [opened, setOpened] = (0, react_1.useState)(false);
128
128
  const [localScore, setLocalScore] = (0, react_1.useState)(null);
@@ -241,7 +241,9 @@ function FeedbackControls(props) {
241
241
  }
242
242
  persistScore(null);
243
243
  } }, "Retry")))),
244
- status === "error" && errorMessage && (React.createElement("div", { className: "error" }, errorMessage))))));
244
+ status === "error" && errorMessage && (React.createElement("div", { className: "error" }, errorMessage)),
245
+ feedback && typeof feedback.score === "number" && onAddToWorkbench &&
246
+ (React.createElement("button", { type: "button", className: "link-button", "data-testid": "feedback-add-to-chat", disabled: disabled, onClick: () => onAddToWorkbench(feedback) }, "Add to chat"))))));
245
247
  }
246
248
  function TraceList(props) {
247
249
  const { traces } = props;
@@ -0,0 +1,12 @@
1
+ import type { WorkbenchSelectedContextChip } from "./workbenchContext.js";
2
+ type WorkbenchChipStartUpdate = (updater: (args: {
3
+ updatableData: {
4
+ workbenchSelectedContextChips: unknown;
5
+ };
6
+ }) => void) => void;
7
+ export declare function readPersistedWorkbenchSelectedContextChips(workspaceId: string | null | undefined): Array<WorkbenchSelectedContextChip>;
8
+ export declare function resolveWorkbenchSelectedContextChips(workspaceId: string | null | undefined, value: unknown): Array<WorkbenchSelectedContextChip>;
9
+ export declare function replaceWorkbenchSelectedContextChips(startUpdate: WorkbenchChipStartUpdate | undefined, next: Array<WorkbenchSelectedContextChip>, workspaceId?: string | null): void;
10
+ export declare function mergeWorkbenchSelectedContextChip(base: Array<WorkbenchSelectedContextChip>, chip: WorkbenchSelectedContextChip): Array<WorkbenchSelectedContextChip>;
11
+ export {};
12
+ //# sourceMappingURL=workbenchChipStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbenchChipStore.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/workbenchChipStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAG1E,KAAK,wBAAwB,GAAG,CAC9B,OAAO,EAAE,CAAC,IAAI,EAAE;IACd,aAAa,EAAE;QACb,6BAA6B,EAAE,OAAO,CAAC;KACxC,CAAC;CACH,KAAK,IAAI,KACP,IAAI,CAAC;AAeV,wBAAgB,0CAA0C,CACxD,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,KAAK,CAAC,4BAA4B,CAAC,CAWrC;AAoBD,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,KAAK,EAAE,OAAO,GACb,KAAK,CAAC,4BAA4B,CAAC,CAIrC;AAED,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,wBAAwB,GAAG,SAAS,EACjD,IAAI,EAAE,KAAK,CAAC,4BAA4B,CAAC,EACzC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,IAAI,CAKN;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,KAAK,CAAC,4BAA4B,CAAC,EACzC,IAAI,EAAE,4BAA4B,GACjC,KAAK,CAAC,4BAA4B,CAAC,CAYrC"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readPersistedWorkbenchSelectedContextChips = readPersistedWorkbenchSelectedContextChips;
37
+ exports.resolveWorkbenchSelectedContextChips = resolveWorkbenchSelectedContextChips;
38
+ exports.replaceWorkbenchSelectedContextChips = replaceWorkbenchSelectedContextChips;
39
+ exports.mergeWorkbenchSelectedContextChip = mergeWorkbenchSelectedContextChip;
40
+ const dntShim = __importStar(require("../../_dnt.shims.js"));
41
+ const workbenchContext_js_1 = require("./workbenchContext.js");
42
+ const WORKBENCH_CHIP_STORAGE_KEY_PREFIX = "gambit:workbench-selected-context-chips:";
43
+ function getWorkbenchChipStorageKey(workspaceId) {
44
+ if (typeof workspaceId !== "string")
45
+ return null;
46
+ const trimmed = workspaceId.trim();
47
+ return trimmed.length > 0
48
+ ? `${WORKBENCH_CHIP_STORAGE_KEY_PREFIX}${trimmed}`
49
+ : null;
50
+ }
51
+ function readPersistedWorkbenchSelectedContextChips(workspaceId) {
52
+ if (typeof dntShim.dntGlobalThis === "undefined")
53
+ return [];
54
+ const storageKey = getWorkbenchChipStorageKey(workspaceId);
55
+ if (!storageKey)
56
+ return [];
57
+ try {
58
+ const raw = globalThis.localStorage.getItem(storageKey);
59
+ if (!raw)
60
+ return [];
61
+ return (0, workbenchContext_js_1.parseWorkbenchSelectedContextChips)(JSON.parse(raw));
62
+ }
63
+ catch {
64
+ return [];
65
+ }
66
+ }
67
+ function persistWorkbenchSelectedContextChips(workspaceId, chips) {
68
+ if (typeof dntShim.dntGlobalThis === "undefined")
69
+ return;
70
+ const storageKey = getWorkbenchChipStorageKey(workspaceId);
71
+ if (!storageKey)
72
+ return;
73
+ try {
74
+ if (chips.length === 0) {
75
+ globalThis.localStorage.removeItem(storageKey);
76
+ return;
77
+ }
78
+ globalThis.localStorage.setItem(storageKey, JSON.stringify(chips));
79
+ }
80
+ catch {
81
+ // ignore storage failures
82
+ }
83
+ }
84
+ function resolveWorkbenchSelectedContextChips(workspaceId, value) {
85
+ const parsed = (0, workbenchContext_js_1.parseWorkbenchSelectedContextChips)(value);
86
+ if (parsed.length > 0)
87
+ return parsed;
88
+ return readPersistedWorkbenchSelectedContextChips(workspaceId);
89
+ }
90
+ function replaceWorkbenchSelectedContextChips(startUpdate, next, workspaceId) {
91
+ persistWorkbenchSelectedContextChips(workspaceId, next);
92
+ startUpdate?.(({ updatableData }) => {
93
+ updatableData.workbenchSelectedContextChips = next;
94
+ });
95
+ }
96
+ function mergeWorkbenchSelectedContextChip(base, chip) {
97
+ const existingIndex = base.findIndex((entry) => entry.chipId === chip.chipId);
98
+ if (existingIndex < 0) {
99
+ return [...base, chip];
100
+ }
101
+ const next = [...base];
102
+ next[existingIndex] = {
103
+ ...next[existingIndex],
104
+ ...chip,
105
+ enabled: chip.enabled,
106
+ };
107
+ return next;
108
+ }
@@ -0,0 +1,50 @@
1
+ export type WorkbenchErrorContext = {
2
+ source: "scenario_run_error" | "grader_run_error";
3
+ workspaceId?: string;
4
+ runId?: string;
5
+ capturedAt: string;
6
+ error: string;
7
+ };
8
+ export type WorkbenchRatingContext = {
9
+ source: "message_rating";
10
+ workspaceId?: string;
11
+ runId?: string;
12
+ capturedAt: string;
13
+ messageRefId: string;
14
+ statePath?: string;
15
+ statePointer?: string;
16
+ score: number;
17
+ reason?: string;
18
+ };
19
+ export type WorkbenchFlagContext = {
20
+ source: "grading_flag";
21
+ workspaceId?: string;
22
+ runId?: string;
23
+ capturedAt: string;
24
+ flagId?: string;
25
+ refId: string;
26
+ score?: number;
27
+ message: string;
28
+ };
29
+ export type WorkbenchVerifyOutlierContext = {
30
+ source: "verify_outlier";
31
+ workspaceId?: string;
32
+ runId?: string;
33
+ capturedAt: string;
34
+ batchId?: string;
35
+ scenarioRunId: string;
36
+ messageRefId?: string;
37
+ score?: number;
38
+ instability?: boolean;
39
+ message: string;
40
+ };
41
+ export type WorkbenchMessageContext = WorkbenchErrorContext | WorkbenchRatingContext | WorkbenchFlagContext | WorkbenchVerifyOutlierContext;
42
+ export type WorkbenchSelectedContextChip = WorkbenchMessageContext & {
43
+ chipId: string;
44
+ enabled: boolean;
45
+ };
46
+ export declare function parseWorkbenchMessageContext(value: unknown): WorkbenchMessageContext | null;
47
+ export declare function parseWorkbenchSelectedContextChip(value: unknown): WorkbenchSelectedContextChip | null;
48
+ export declare function parseWorkbenchSelectedContextChips(value: unknown): Array<WorkbenchSelectedContextChip>;
49
+ export declare function toWorkbenchMessageContext(chip: WorkbenchSelectedContextChip): WorkbenchMessageContext;
50
+ //# sourceMappingURL=workbenchContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbenchContext.d.ts","sourceRoot":"","sources":["../../../src/simulator-ui/src/workbenchContext.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,6BAA6B,CAAC;AAElC,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,GAAG;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAmBF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,IAAI,CA6EhC;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,GACb,4BAA4B,GAAG,IAAI,CAWrC;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,KAAK,CAAC,4BAA4B,CAAC,CAKrC;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,4BAA4B,GACjC,uBAAuB,CA+CzB"}