@assistant-ui/react-devtools 1.2.19 → 1.2.21

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 (213) hide show
  1. package/dist/DevToolsModal.d.ts +10 -13
  2. package/dist/DevToolsModal.d.ts.map +1 -1
  3. package/dist/DevToolsModalImpl.d.ts +3 -5
  4. package/dist/DevToolsModalImpl.d.ts.map +1 -1
  5. package/dist/data/createInProcessClient.d.ts +3 -6
  6. package/dist/data/createInProcessClient.d.ts.map +1 -1
  7. package/dist/data/projectApi.d.ts +6 -8
  8. package/dist/data/projectApi.d.ts.map +1 -1
  9. package/dist/data/projectApi.js +2 -2
  10. package/dist/data/projectApi.js.map +1 -1
  11. package/dist/data/types.d.ts +33 -35
  12. package/dist/data/types.d.ts.map +1 -1
  13. package/dist/data/useDevToolsClient.d.ts +7 -10
  14. package/dist/data/useDevToolsClient.d.ts.map +1 -1
  15. package/dist/index.d.ts +10 -10
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/shell/DevToolsOverlay.d.ts +7 -10
  18. package/dist/shell/DevToolsOverlay.d.ts.map +1 -1
  19. package/dist/shell/DevToolsPanel.d.ts +12 -15
  20. package/dist/shell/DevToolsPanel.d.ts.map +1 -1
  21. package/dist/shell/ShadowRoot.d.ts +7 -10
  22. package/dist/shell/ShadowRoot.d.ts.map +1 -1
  23. package/dist/shell/SplitLayout.d.ts +13 -16
  24. package/dist/shell/SplitLayout.d.ts.map +1 -1
  25. package/dist/shell/registry.d.ts +34 -37
  26. package/dist/shell/registry.d.ts.map +1 -1
  27. package/dist/shell/tabs/ActivityTab.d.ts +2 -5
  28. package/dist/shell/tabs/ActivityTab.d.ts.map +1 -1
  29. package/dist/shell/tabs/ContextTab.d.ts +2 -5
  30. package/dist/shell/tabs/ContextTab.d.ts.map +1 -1
  31. package/dist/shell/tabs/RawTab.d.ts +2 -5
  32. package/dist/shell/tabs/RawTab.d.ts.map +1 -1
  33. package/dist/shell/tabs/ThreadTab.d.ts +2 -5
  34. package/dist/shell/tabs/ThreadTab.d.ts.map +1 -1
  35. package/dist/shell/tabs/navSelection.d.ts +1 -4
  36. package/dist/shell/tabs/navSelection.d.ts.map +1 -1
  37. package/dist/styles/panel.generated.d.ts +1 -4
  38. package/dist/styles/panel.generated.d.ts.map +1 -1
  39. package/dist/types.d.ts +6 -9
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/utils/common.d.ts +13 -16
  42. package/dist/utils/common.d.ts.map +1 -1
  43. package/dist/utils/diff.d.ts +6 -9
  44. package/dist/utils/diff.d.ts.map +1 -1
  45. package/dist/utils/serialization.d.ts +7 -10
  46. package/dist/utils/serialization.d.ts.map +1 -1
  47. package/dist/utils/serialization.js +17 -0
  48. package/dist/utils/serialization.js.map +1 -1
  49. package/dist/utils/toolNormalization.d.ts +14 -17
  50. package/dist/utils/toolNormalization.d.ts.map +1 -1
  51. package/dist/utils/unserializable.d.ts +2 -5
  52. package/dist/utils/unserializable.d.ts.map +1 -1
  53. package/dist/views/activity/EventLogRow.d.ts +12 -15
  54. package/dist/views/activity/EventLogRow.d.ts.map +1 -1
  55. package/dist/views/activity/EventStreamPane.d.ts +3 -6
  56. package/dist/views/activity/EventStreamPane.d.ts.map +1 -1
  57. package/dist/views/activity/OrphansPane.d.ts +3 -6
  58. package/dist/views/activity/OrphansPane.d.ts.map +1 -1
  59. package/dist/views/activity/RunDetailPane.d.ts +3 -6
  60. package/dist/views/activity/RunDetailPane.d.ts.map +1 -1
  61. package/dist/views/activity/activityNodes.d.ts +29 -32
  62. package/dist/views/activity/activityNodes.d.ts.map +1 -1
  63. package/dist/views/activity/index.d.ts +7 -6
  64. package/dist/views/activity/index.d.ts.map +1 -0
  65. package/dist/views/attachments/AttachmentList.d.ts +5 -8
  66. package/dist/views/attachments/AttachmentList.d.ts.map +1 -1
  67. package/dist/views/attachments/MediaPartView.d.ts +10 -13
  68. package/dist/views/attachments/MediaPartView.d.ts.map +1 -1
  69. package/dist/views/attachments/formatBytes.d.ts +3 -6
  70. package/dist/views/attachments/formatBytes.d.ts.map +1 -1
  71. package/dist/views/attachments/index.d.ts +5 -5
  72. package/dist/views/attachments/index.d.ts.map +1 -0
  73. package/dist/views/attachments/parseAttachment.d.ts +3 -6
  74. package/dist/views/attachments/parseAttachment.d.ts.map +1 -1
  75. package/dist/views/attachments/types.d.ts +12 -15
  76. package/dist/views/attachments/types.d.ts.map +1 -1
  77. package/dist/views/context/ContextDetail.d.ts +5 -8
  78. package/dist/views/context/ContextDetail.d.ts.map +1 -1
  79. package/dist/views/context/ToolUIsView.d.ts +2 -5
  80. package/dist/views/context/ToolUIsView.d.ts.map +1 -1
  81. package/dist/views/context/contextNodes.d.ts +21 -24
  82. package/dist/views/context/contextNodes.d.ts.map +1 -1
  83. package/dist/views/context/index.d.ts +5 -4
  84. package/dist/views/context/index.d.ts.map +1 -0
  85. package/dist/views/mcp/McpView.d.ts +3 -6
  86. package/dist/views/mcp/McpView.d.ts.map +1 -1
  87. package/dist/views/mcp/index.d.ts +2 -2
  88. package/dist/views/mcp/index.d.ts.map +1 -0
  89. package/dist/views/mcp/parse.d.ts +2 -5
  90. package/dist/views/mcp/parse.d.ts.map +1 -1
  91. package/dist/views/mcp/types.d.ts +15 -18
  92. package/dist/views/mcp/types.d.ts.map +1 -1
  93. package/dist/views/message/ChainOfThought.d.ts +3 -6
  94. package/dist/views/message/ChainOfThought.d.ts.map +1 -1
  95. package/dist/views/message/MessageDetailPane.d.ts +4 -7
  96. package/dist/views/message/MessageDetailPane.d.ts.map +1 -1
  97. package/dist/views/message/MessageItem.d.ts +5 -8
  98. package/dist/views/message/MessageItem.d.ts.map +1 -1
  99. package/dist/views/message/MessageList.d.ts +4 -7
  100. package/dist/views/message/MessageList.d.ts.map +1 -1
  101. package/dist/views/message/MessageMetrics.d.ts +3 -6
  102. package/dist/views/message/MessageMetrics.d.ts.map +1 -1
  103. package/dist/views/message/MessageTimeline.d.ts +7 -10
  104. package/dist/views/message/MessageTimeline.d.ts.map +1 -1
  105. package/dist/views/message/PartDisclosure.d.ts +6 -9
  106. package/dist/views/message/PartDisclosure.d.ts.map +1 -1
  107. package/dist/views/message/PartView.d.ts +4 -7
  108. package/dist/views/message/PartView.d.ts.map +1 -1
  109. package/dist/views/message/RoleLabel.d.ts +3 -6
  110. package/dist/views/message/RoleLabel.d.ts.map +1 -1
  111. package/dist/views/message/StatusBadge.d.ts +7 -10
  112. package/dist/views/message/StatusBadge.d.ts.map +1 -1
  113. package/dist/views/message/ToolCallView.d.ts +4 -7
  114. package/dist/views/message/ToolCallView.d.ts.map +1 -1
  115. package/dist/views/message/TtftBar.d.ts +3 -6
  116. package/dist/views/message/TtftBar.d.ts.map +1 -1
  117. package/dist/views/message/index.d.ts +6 -6
  118. package/dist/views/message/index.d.ts.map +1 -0
  119. package/dist/views/message/messagePlainText.d.ts +2 -5
  120. package/dist/views/message/messagePlainText.d.ts.map +1 -1
  121. package/dist/views/message/parse.d.ts +5 -8
  122. package/dist/views/message/parse.d.ts.map +1 -1
  123. package/dist/views/message/types.d.ts +108 -110
  124. package/dist/views/message/types.d.ts.map +1 -1
  125. package/dist/views/model-context/ModelContextView.d.ts +9 -12
  126. package/dist/views/model-context/ModelContextView.d.ts.map +1 -1
  127. package/dist/views/nav.d.ts +10 -13
  128. package/dist/views/nav.d.ts.map +1 -1
  129. package/dist/views/raw/RawDetail.d.ts +5 -8
  130. package/dist/views/raw/RawDetail.d.ts.map +1 -1
  131. package/dist/views/raw/index.d.ts +4 -3
  132. package/dist/views/raw/index.d.ts.map +1 -0
  133. package/dist/views/raw/rawNodes.d.ts +13 -16
  134. package/dist/views/raw/rawNodes.d.ts.map +1 -1
  135. package/dist/views/raw/statePreview.d.ts +1 -4
  136. package/dist/views/raw/statePreview.d.ts.map +1 -1
  137. package/dist/views/runs/PayloadDiff.d.ts +3 -6
  138. package/dist/views/runs/PayloadDiff.d.ts.map +1 -1
  139. package/dist/views/runs/parse.d.ts +3 -6
  140. package/dist/views/runs/parse.d.ts.map +1 -1
  141. package/dist/views/runs/types.d.ts +18 -21
  142. package/dist/views/runs/types.d.ts.map +1 -1
  143. package/dist/views/scopes/ScopesView.d.ts +2 -5
  144. package/dist/views/scopes/ScopesView.d.ts.map +1 -1
  145. package/dist/views/scopes/index.d.ts +2 -2
  146. package/dist/views/scopes/index.d.ts.map +1 -0
  147. package/dist/views/scopes/parse.d.ts +2 -5
  148. package/dist/views/scopes/parse.d.ts.map +1 -1
  149. package/dist/views/scopes/types.d.ts +5 -8
  150. package/dist/views/scopes/types.d.ts.map +1 -1
  151. package/dist/views/thread/ComposerAttachments.d.ts +3 -6
  152. package/dist/views/thread/ComposerAttachments.d.ts.map +1 -1
  153. package/dist/views/thread/ComposerFlags.d.ts +3 -6
  154. package/dist/views/thread/ComposerFlags.d.ts.map +1 -1
  155. package/dist/views/thread/ComposerQueue.d.ts +3 -6
  156. package/dist/views/thread/ComposerQueue.d.ts.map +1 -1
  157. package/dist/views/thread/ConversationList.d.ts +7 -10
  158. package/dist/views/thread/ConversationList.d.ts.map +1 -1
  159. package/dist/views/thread/ConversationStatusDot.d.ts +12 -15
  160. package/dist/views/thread/ConversationStatusDot.d.ts.map +1 -1
  161. package/dist/views/thread/ThreadDetails.d.ts +4 -7
  162. package/dist/views/thread/ThreadDetails.d.ts.map +1 -1
  163. package/dist/views/thread/Transcript.d.ts +8 -11
  164. package/dist/views/thread/Transcript.d.ts.map +1 -1
  165. package/dist/views/thread/index.d.ts +10 -10
  166. package/dist/views/thread/index.d.ts.map +1 -0
  167. package/dist/views/thread/resolve.d.ts +3 -6
  168. package/dist/views/thread/resolve.d.ts.map +1 -1
  169. package/dist/views/thread/types.d.ts +40 -42
  170. package/dist/views/thread/types.d.ts.map +1 -1
  171. package/dist/views/thread/utils.d.ts +5 -8
  172. package/dist/views/thread/utils.d.ts.map +1 -1
  173. package/dist/views/ui/CenteredMessage.d.ts +3 -6
  174. package/dist/views/ui/CenteredMessage.d.ts.map +1 -1
  175. package/dist/views/ui/Chip.d.ts +4 -7
  176. package/dist/views/ui/Chip.d.ts.map +1 -1
  177. package/dist/views/ui/ControlButton.d.ts +2 -5
  178. package/dist/views/ui/ControlButton.d.ts.map +1 -1
  179. package/dist/views/ui/CopyButton.d.ts +7 -10
  180. package/dist/views/ui/CopyButton.d.ts.map +1 -1
  181. package/dist/views/ui/EmptyState.d.ts +3 -6
  182. package/dist/views/ui/EmptyState.d.ts.map +1 -1
  183. package/dist/views/ui/InfoCard.d.ts +6 -9
  184. package/dist/views/ui/InfoCard.d.ts.map +1 -1
  185. package/dist/views/ui/JSONTree.d.ts +4 -7
  186. package/dist/views/ui/JSONTree.d.ts.map +1 -1
  187. package/dist/views/ui/PaneHeader.d.ts +8 -11
  188. package/dist/views/ui/PaneHeader.d.ts.map +1 -1
  189. package/dist/views/ui/RailTime.d.ts +3 -6
  190. package/dist/views/ui/RailTime.d.ts.map +1 -1
  191. package/dist/views/ui/SectionLabel.d.ts +3 -6
  192. package/dist/views/ui/SectionLabel.d.ts.map +1 -1
  193. package/dist/views/ui/SelectableRow.d.ts +8 -11
  194. package/dist/views/ui/SelectableRow.d.ts.map +1 -1
  195. package/dist/views/ui/Sparkline.d.ts +3 -6
  196. package/dist/views/ui/Sparkline.d.ts.map +1 -1
  197. package/dist/views/ui/SummaryItem.d.ts +6 -9
  198. package/dist/views/ui/SummaryItem.d.ts.map +1 -1
  199. package/dist/views/ui/ToneBadge.d.ts +7 -10
  200. package/dist/views/ui/ToneBadge.d.ts.map +1 -1
  201. package/dist/views/ui/badgeTone.d.ts +13 -16
  202. package/dist/views/ui/badgeTone.d.ts.map +1 -1
  203. package/dist/views/ui/getInlineJson.d.ts +1 -4
  204. package/dist/views/ui/getInlineJson.d.ts.map +1 -1
  205. package/dist/views/ui/index.d.ts +17 -16
  206. package/dist/views/ui/index.d.ts.map +1 -0
  207. package/dist/views/ui/useCopyToClipboard.d.ts +4 -7
  208. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
  209. package/package.json +14 -13
  210. package/src/data/projectApi.test.ts +41 -0
  211. package/src/data/projectApi.ts +2 -2
  212. package/src/utils/serialization.test.ts +81 -0
  213. package/src/utils/serialization.ts +36 -0
@@ -1,20 +1,17 @@
1
- import { DevToolsClient } from "./data/types.js";
2
- import { DevToolsPanelPlugin } from "./shell/registry.js";
3
- //#region src/DevToolsModal.d.ts
4
- interface DevToolsModalProps {
5
- /** Extra inspector tabs appended after the builtins. */
6
- plugins?: DevToolsPanelPlugin[];
7
- /** Force a theme. Defaults to "system", which follows the host `.dark` class. */
8
- theme?: "light" | "dark" | "system";
9
- /** Data source. Defaults to the in-process DevToolsHooks client. */
10
- client?: DevToolsClient;
1
+ import type { DevToolsPanelPlugin } from "./shell/registry.js";
2
+ import type { DevToolsClient } from "./data/types.js";
3
+ export interface DevToolsModalProps {
4
+ /** Extra inspector tabs appended after the builtins. */
5
+ plugins?: DevToolsPanelPlugin[];
6
+ /** Force a theme. Defaults to "system", which follows the host `.dark` class. */
7
+ theme?: "light" | "dark" | "system";
8
+ /** Data source. Defaults to the in-process DevToolsHooks client. */
9
+ client?: DevToolsClient;
11
10
  }
12
11
  /**
13
12
  * Dev-only. In production the body returns null before the lazy panel chunk is
14
13
  * ever requested, so the panel and its compiled styles stay out of the
15
14
  * production bundle (the dynamic import is also code-split).
16
15
  */
17
- declare const DevToolsModal: (props?: DevToolsModalProps) => import("react").JSX.Element | null;
18
- //#endregion
19
- export { DevToolsModal, DevToolsModalProps };
16
+ export declare const DevToolsModal: (props?: DevToolsModalProps) => import("react").JSX.Element | null;
20
17
  //# sourceMappingURL=DevToolsModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModal.d.ts","names":[],"sources":["../src/DevToolsModal.tsx"],"mappings":";;;UAMiB;;EAEf,UAAU;;EAEV;;EAEA,SAAS;;;;;;;cAUE,gBAAiB,QAAO,uCAAuB,IAAA"}
1
+ {"version":3,"file":"DevToolsModal.d.ts","sourceRoot":"","sources":["../src/DevToolsModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,4BAAyB;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAqB;AAEnD,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpC,oEAAoE;IACpE,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAID;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,QAAO,kBAAuB,uCAa3D,CAAC"}
@@ -1,6 +1,4 @@
1
- import { DevToolsModalProps } from "./DevToolsModal.js";
2
- //#region src/DevToolsModalImpl.d.ts
3
- declare const DevToolsModalImpl: ({ plugins, theme, client }: DevToolsModalProps) => import("react").JSX.Element;
4
- //#endregion
5
- export { DevToolsModalImpl as default };
1
+ import type { DevToolsModalProps } from "./DevToolsModal.js";
2
+ declare const DevToolsModalImpl: ({ plugins, theme, client, }: DevToolsModalProps) => import("react").JSX.Element;
3
+ export default DevToolsModalImpl;
6
4
  //# sourceMappingURL=DevToolsModalImpl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModalImpl.d.ts","names":[],"sources":["../src/DevToolsModalImpl.tsx"],"mappings":";;cAmCM,sBAAqB,SAAA,OAAA,UAIxB,uCAAkB,IAAA"}
1
+ {"version":3,"file":"DevToolsModalImpl.d.ts","sourceRoot":"","sources":["../src/DevToolsModalImpl.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAAwB;AA8B1D,QAAA,MAAM,iBAAiB,GAAI,6BAIxB,kBAAkB,gCAkBpB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,14 +1,11 @@
1
- import { DevToolsClient } from "./types.js";
2
- //#region src/data/createInProcessClient.d.ts
1
+ import { type DevToolsClient } from "./types.js";
3
2
  /**
4
3
  * The default transport: reads the in-process DevToolsHooks registry and
5
4
  * re-projects it on every change.
6
5
  *
7
6
  * Projection runs inside the subscribe/change callbacks and getSnapshot returns the cached result, because useSyncExternalStore requires a referentially stable snapshot and rebuilding it per call would loop.
8
7
  */
9
- declare const createInProcessClient: () => DevToolsClient;
8
+ export declare const createInProcessClient: () => DevToolsClient;
10
9
  /** Shared default client used by DevToolsModal and DevToolsPanel. */
11
- declare const inProcessClient: DevToolsClient;
12
- //#endregion
13
- export { createInProcessClient, inProcessClient };
10
+ export declare const inProcessClient: DevToolsClient;
14
11
  //# sourceMappingURL=createInProcessClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createInProcessClient.d.ts","names":[],"sources":["../../src/data/createInProcessClient.ts"],"mappings":";;;;;;;;cAea,6BAA4B;;cAgD5B,iBAAe"}
1
+ {"version":3,"file":"createInProcessClient.d.ts","sourceRoot":"","sources":["../../src/data/createInProcessClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,cAAc,EAEpB,mBAAgB;AAEjB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAO,cA6CxC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,eAAe,gBAA0B,CAAC"}
@@ -1,9 +1,8 @@
1
- import { ApiInfo, EventLogEntry } from "./types.js";
2
- import { AssistantClient } from "@assistant-ui/react";
3
- //#region src/data/projectApi.d.ts
1
+ import type { AssistantClient } from "@assistant-ui/react";
2
+ import type { ApiInfo, EventLogEntry } from "./types.js";
4
3
  interface DevToolsApiEntry {
5
- api: Partial<AssistantClient>;
6
- logs: ReadonlyArray<EventLogEntry>;
4
+ api: Partial<AssistantClient>;
5
+ logs: ReadonlyArray<EventLogEntry>;
7
6
  }
8
7
  /**
9
8
  * Projects a live DevToolsHooks api entry into the plain, render-ready shape the
@@ -15,7 +14,6 @@ interface DevToolsApiEntry {
15
14
  * renderers cannot crash on circular references or non-serializable values;
16
15
  * `log.time` is kept as a Date for the clock formatter.
17
16
  */
18
- declare const projectApi: (apiId: number, entry: DevToolsApiEntry) => ApiInfo;
19
- //#endregion
20
- export { projectApi };
17
+ export declare const projectApi: (apiId: number, entry: DevToolsApiEntry) => ApiInfo;
18
+ export {};
21
19
  //# sourceMappingURL=projectApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectApi.d.ts","names":[],"sources":["../../src/data/projectApi.ts"],"mappings":";;;UASU;EACR,KAAK,QAAQ;EACb,MAAM,cAAc;;;;;;;;;;;;cAyGT,aAAc,eAAe,OAAO,qBAAmB"}
1
+ {"version":3,"file":"projectApi.d.ts","sourceRoot":"","sources":["../../src/data/projectApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAgB;AAEtD,UAAU,gBAAgB;IACxB,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9B,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CACpC;AA8FD;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,EAAE,OAAO,gBAAgB,KAAG,OA0DnE,CAAC"}
@@ -34,7 +34,7 @@ const collectThreadSnapshots = (entry, state) => {
34
34
  if (!assistantRuntime) return void 0;
35
35
  const threadIds = [...isStringArray(threadsState.threadIds), ...isStringArray(threadsState.archivedThreadIds)];
36
36
  if (threadIds.length === 0) return void 0;
37
- const snapshots = {};
37
+ const snapshots = Object.create(null);
38
38
  for (const threadId of threadIds) try {
39
39
  const threadRuntime = assistantRuntime.threads.getById(threadId);
40
40
  const threadState = threadRuntime.getState();
@@ -48,7 +48,7 @@ const collectThreadSnapshots = (entry, state) => {
48
48
  composer: threadRuntime.composer.getState()
49
49
  });
50
50
  } catch {}
51
- return Object.keys(snapshots).length > 0 ? snapshots : void 0;
51
+ return Object.keys(snapshots).length > 0 ? { ...snapshots } : void 0;
52
52
  };
53
53
  /**
54
54
  * Projects a live DevToolsHooks api entry into the plain, render-ready shape the
@@ -1 +1 @@
1
- {"version":3,"file":"projectApi.js","names":["AssistantClient","isRecord","isStringArray","sanitizeAndRedact","sanitizeForMessage","serializeModelContext","ApiInfo","EventLogEntry","DevToolsApiEntry","api","Partial","logs","ReadonlyArray","readMethods","scopeValue","Object","keys","filter","key","Record","ThreadsClientMethods","__internal_getAssistantRuntime","threads","getById","threadId","getState","messages","isRunning","isLoading","isDisabled","suggestions","capabilities","composer","collectThreadSnapshots","entry","state","threadsState","undefined","threadsScope","threadsClient","assistantRuntime","threadIds","archivedThreadIds","length","snapshots","threadRuntime","threadState","projectApi","apiId","scopes","Array","name","source","query","methods","scope","entries","push","modelContext","thread","getModelContext","sanitizedState","threadSnapshots","id","map","log","time","event","data"],"sources":["../../src/data/projectApi.ts"],"sourcesContent":["import type { AssistantClient } from \"@assistant-ui/react\";\nimport { isRecord, isStringArray } from \"../utils/common\";\nimport {\n sanitizeAndRedact,\n sanitizeForMessage,\n serializeModelContext,\n} from \"../utils/serialization\";\nimport type { ApiInfo, EventLogEntry } from \"./types\";\n\ninterface DevToolsApiEntry {\n api: Partial<AssistantClient>;\n logs: ReadonlyArray<EventLogEntry>;\n}\n\n/**\n * Lists the method names of a client proxy. The client proxy throws from its\n * `getOwnPropertyDescriptor` trap, so `Object.keys` is best-effort and isolated\n * from state extraction.\n */\nconst readMethods = (scopeValue: unknown): string[] => {\n if (\n !scopeValue ||\n (typeof scopeValue !== \"object\" && typeof scopeValue !== \"function\")\n )\n return [];\n try {\n return Object.keys(scopeValue).filter(\n (key) =>\n typeof (scopeValue as Record<string, unknown>)[key] === \"function\",\n );\n } catch {\n return [];\n }\n};\n\ntype ThreadsClientMethods = {\n __internal_getAssistantRuntime?: () => {\n threads: {\n getById: (threadId: string) => {\n getState: () => {\n messages: unknown;\n isRunning?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n suggestions: unknown;\n capabilities: unknown;\n };\n composer: { getState: () => unknown };\n };\n };\n };\n};\n\n/**\n * Reads cached thread states for every id in the thread list. Only threads whose\n * runtime has been mounted (visited in the app) return data; unvisited threads\n * are omitted so DevTools can still list them from `state.threads.threadItems`.\n */\nconst collectThreadSnapshots = (\n entry: DevToolsApiEntry,\n state: Record<string, unknown>,\n): Record<string, unknown> | undefined => {\n const threadsState = state.threads;\n if (!isRecord(threadsState)) return undefined;\n\n const threadsScope = entry.api.threads;\n if (typeof threadsScope !== \"function\") return undefined;\n\n let threadsClient: ThreadsClientMethods;\n try {\n threadsClient = threadsScope() as ThreadsClientMethods;\n } catch {\n return undefined;\n }\n\n const assistantRuntime = threadsClient.__internal_getAssistantRuntime?.();\n if (!assistantRuntime) return undefined;\n\n const threadIds = [\n ...isStringArray(threadsState.threadIds),\n ...isStringArray(threadsState.archivedThreadIds),\n ];\n if (threadIds.length === 0) return undefined;\n\n const snapshots: Record<string, unknown> = {};\n for (const threadId of threadIds) {\n try {\n const threadRuntime = assistantRuntime.threads.getById(threadId);\n const threadState = threadRuntime.getState();\n snapshots[threadId] = sanitizeForMessage({\n messages: threadState.messages,\n isRunning: threadState.isRunning,\n isLoading: threadState.isLoading,\n isDisabled: threadState.isDisabled,\n suggestions: threadState.suggestions,\n capabilities: threadState.capabilities,\n composer: threadRuntime.composer.getState(),\n });\n } catch {\n // Thread runtime not mounted yet (never opened in the app).\n }\n }\n\n return Object.keys(snapshots).length > 0 ? snapshots : undefined;\n};\n\n/**\n * Projects a live DevToolsHooks api entry into the plain, render-ready shape the\n * views consume. This is the in-process equivalent of the old\n * DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state\n * and the scope graph, normalizes the model context, and redacts credentials.\n *\n * `state` and each `log.data` are passed through sanitizeForMessage so the JSON\n * renderers cannot crash on circular references or non-serializable values;\n * `log.time` is kept as a Date for the clock formatter.\n */\nexport const projectApi = (apiId: number, entry: DevToolsApiEntry): ApiInfo => {\n const state: Record<string, unknown> = {};\n const scopes: Array<{\n name: string;\n source: string | null;\n query: Record<string, unknown> | null;\n methods: string[];\n }> = [];\n\n for (const [name, scope] of Object.entries(entry.api)) {\n if (typeof scope !== \"function\" || !(\"source\" in scope)) continue;\n\n let methods: string[] = [];\n try {\n const scopeValue = scope();\n if (scope.source === \"root\") {\n state[name] =\n (scopeValue as { getState?: () => unknown })?.getState?.() ??\n scopeValue;\n }\n methods = readMethods(scopeValue);\n } catch {\n // scope() may throw for derived scopes before the client is mounted.\n }\n\n scopes.push({\n name,\n source: scope.source,\n query: scope.query,\n methods,\n });\n }\n\n let modelContext: ApiInfo[\"modelContext\"];\n try {\n modelContext = serializeModelContext(\n entry.api.thread?.().getModelContext(),\n );\n } catch {\n // A throwing thread()/getModelContext() should not drop the whole api;\n // show partial data (state, scopes, logs) without the model context.\n }\n\n const sanitizedState = sanitizeForMessage(state) as Record<string, unknown>;\n const threadSnapshots = collectThreadSnapshots(entry, sanitizedState);\n\n return {\n id: apiId,\n state: sanitizedState,\n logs: entry.logs.map((log) => ({\n time: log.time,\n event: log.event,\n data: sanitizeForMessage(log.data),\n })),\n modelContext,\n scopes: sanitizeAndRedact(scopes),\n ...(threadSnapshots ? { threadSnapshots } : {}),\n };\n};\n"],"mappings":";;;;;;;;AAmBA,MAAMa,eAAeC,eAAkC;CACrD,IACE,CAACA,cACA,OAAOA,eAAe,YAAY,OAAOA,eAAe,YAEzD,OAAO,CAAA;CACT,IAAI;EACF,OAAOC,OAAOC,KAAKF,UAAU,CAAC,CAACG,QAC5BC,QACC,OAAQJ,WAAuCI,SAAS,UAC5D;CACF,QAAQ;EACN,OAAO,CAAA;CACT;AACF;;;;;;AAyBA,MAAMe,0BACJC,OACAC,UACwC;CACxC,MAAMC,eAAeD,MAAMb;CAC3B,IAAI,CAACrB,SAASmC,YAAY,GAAG,OAAOC,KAAAA;CAEpC,MAAMC,eAAeJ,MAAMzB,IAAIa;CAC/B,IAAI,OAAOgB,iBAAiB,YAAY,OAAOD,KAAAA;CAE/C,IAAIE;CACJ,IAAI;EACFA,gBAAgBD,aAAa;CAC/B,QAAQ;EACN;CACF;CAEA,MAAME,mBAAmBD,cAAclB,iCAAiC;CACxE,IAAI,CAACmB,kBAAkB,OAAOH,KAAAA;CAE9B,MAAMI,YAAY,CAChB,GAAGvC,cAAckC,aAAaK,SAAS,GACvC,GAAGvC,cAAckC,aAAaM,iBAAiB,CAAC;CAElD,IAAID,UAAUE,WAAW,GAAG,OAAON,KAAAA;CAEnC,MAAMO,YAAqC,CAAC;CAC5C,KAAK,MAAMpB,YAAYiB,WACrB,IAAI;EACF,MAAMI,gBAAgBL,iBAAiBlB,QAAQC,QAAQC,QAAQ;EAC/D,MAAMsB,cAAcD,cAAcpB,SAAS;EAC3CmB,UAAUpB,YAAYpB,mBAAmB;GACvCsB,UAAUoB,YAAYpB;GACtBC,WAAWmB,YAAYnB;GACvBC,WAAWkB,YAAYlB;GACvBC,YAAYiB,YAAYjB;GACxBC,aAAagB,YAAYhB;GACzBC,cAAce,YAAYf;GAC1BC,UAAUa,cAAcb,SAASP,SAAS;EAC5C,CAAC;CACH,QAAQ,CACN;CAIJ,OAAOV,OAAOC,KAAK4B,SAAS,CAAC,CAACD,SAAS,IAAIC,YAAYP,KAAAA;AACzD;;;;;;;;;;;AAYA,MAAaU,cAAcC,OAAed,UAAqC;CAC7E,MAAMC,QAAiC,CAAC;CACxC,MAAMc,SAKD,CAAA;CAEL,KAAK,MAAM,CAACE,MAAMI,UAAUxC,OAAOyC,QAAQtB,MAAMzB,GAAG,GAAG;EACrD,IAAI,OAAO8C,UAAU,cAAc,EAAE,YAAYA,QAAQ;EAEzD,IAAID,UAAoB,CAAA;EACxB,IAAI;GACF,MAAMxC,aAAayC,MAAM;GACzB,IAAIA,MAAMH,WAAW,QACnBjB,MAAMgB,QACHrC,YAA6CW,WAAW,KACzDX;GAEJwC,UAAUzC,YAAYC,UAAU;EAClC,QAAQ,CACN;EAGFmC,OAAOQ,KAAK;GACVN;GACAC,QAAQG,MAAMH;GACdC,OAAOE,MAAMF;GACbC;EACF,CAAC;CACH;CAEA,IAAII;CACJ,IAAI;EACFA,eAAerD,sBACb6B,MAAMzB,IAAIkD,SAAS,CAAC,CAACC,gBAAgB,CACvC;CACF,QAAQ,CAEN;CAGF,MAAMC,iBAAiBzD,mBAAmB+B,KAAK;CAC/C,MAAM2B,kBAAkB7B,uBAAuBC,OAAO2B,cAAc;CAEpE,OAAO;EACLE,IAAIf;EACJb,OAAO0B;EACPlD,MAAMuB,MAAMvB,KAAKqD,KAAKC,SAAS;GAC7BC,MAAMD,IAAIC;GACVC,OAAOF,IAAIE;GACXC,MAAMhE,mBAAmB6D,IAAIG,IAAI;EACnC,EAAE;EACFV;EACAT,QAAQ9C,kBAAkB8C,MAAM;EAChC,GAAIa,kBAAkB,EAAEA,gBAAgB,IAAI,CAAC;CAC/C;AACF"}
1
+ {"version":3,"file":"projectApi.js","names":["AssistantClient","isRecord","isStringArray","sanitizeAndRedact","sanitizeForMessage","serializeModelContext","ApiInfo","EventLogEntry","DevToolsApiEntry","api","Partial","logs","ReadonlyArray","readMethods","scopeValue","Object","keys","filter","key","Record","ThreadsClientMethods","__internal_getAssistantRuntime","threads","getById","threadId","getState","messages","isRunning","isLoading","isDisabled","suggestions","capabilities","composer","collectThreadSnapshots","entry","state","threadsState","undefined","threadsScope","threadsClient","assistantRuntime","threadIds","archivedThreadIds","length","snapshots","create","threadRuntime","threadState","projectApi","apiId","scopes","Array","name","source","query","methods","scope","entries","push","modelContext","thread","getModelContext","sanitizedState","threadSnapshots","id","map","log","time","event","data"],"sources":["../../src/data/projectApi.ts"],"sourcesContent":["import type { AssistantClient } from \"@assistant-ui/react\";\nimport { isRecord, isStringArray } from \"../utils/common\";\nimport {\n sanitizeAndRedact,\n sanitizeForMessage,\n serializeModelContext,\n} from \"../utils/serialization\";\nimport type { ApiInfo, EventLogEntry } from \"./types\";\n\ninterface DevToolsApiEntry {\n api: Partial<AssistantClient>;\n logs: ReadonlyArray<EventLogEntry>;\n}\n\n/**\n * Lists the method names of a client proxy. The client proxy throws from its\n * `getOwnPropertyDescriptor` trap, so `Object.keys` is best-effort and isolated\n * from state extraction.\n */\nconst readMethods = (scopeValue: unknown): string[] => {\n if (\n !scopeValue ||\n (typeof scopeValue !== \"object\" && typeof scopeValue !== \"function\")\n )\n return [];\n try {\n return Object.keys(scopeValue).filter(\n (key) =>\n typeof (scopeValue as Record<string, unknown>)[key] === \"function\",\n );\n } catch {\n return [];\n }\n};\n\ntype ThreadsClientMethods = {\n __internal_getAssistantRuntime?: () => {\n threads: {\n getById: (threadId: string) => {\n getState: () => {\n messages: unknown;\n isRunning?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n suggestions: unknown;\n capabilities: unknown;\n };\n composer: { getState: () => unknown };\n };\n };\n };\n};\n\n/**\n * Reads cached thread states for every id in the thread list. Only threads whose\n * runtime has been mounted (visited in the app) return data; unvisited threads\n * are omitted so DevTools can still list them from `state.threads.threadItems`.\n */\nconst collectThreadSnapshots = (\n entry: DevToolsApiEntry,\n state: Record<string, unknown>,\n): Record<string, unknown> | undefined => {\n const threadsState = state.threads;\n if (!isRecord(threadsState)) return undefined;\n\n const threadsScope = entry.api.threads;\n if (typeof threadsScope !== \"function\") return undefined;\n\n let threadsClient: ThreadsClientMethods;\n try {\n threadsClient = threadsScope() as ThreadsClientMethods;\n } catch {\n return undefined;\n }\n\n const assistantRuntime = threadsClient.__internal_getAssistantRuntime?.();\n if (!assistantRuntime) return undefined;\n\n const threadIds = [\n ...isStringArray(threadsState.threadIds),\n ...isStringArray(threadsState.archivedThreadIds),\n ];\n if (threadIds.length === 0) return undefined;\n\n const snapshots: Record<string, unknown> = Object.create(null);\n for (const threadId of threadIds) {\n try {\n const threadRuntime = assistantRuntime.threads.getById(threadId);\n const threadState = threadRuntime.getState();\n snapshots[threadId] = sanitizeForMessage({\n messages: threadState.messages,\n isRunning: threadState.isRunning,\n isLoading: threadState.isLoading,\n isDisabled: threadState.isDisabled,\n suggestions: threadState.suggestions,\n capabilities: threadState.capabilities,\n composer: threadRuntime.composer.getState(),\n });\n } catch {\n // Thread runtime not mounted yet (never opened in the app).\n }\n }\n\n return Object.keys(snapshots).length > 0 ? { ...snapshots } : undefined;\n};\n\n/**\n * Projects a live DevToolsHooks api entry into the plain, render-ready shape the\n * views consume. This is the in-process equivalent of the old\n * DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state\n * and the scope graph, normalizes the model context, and redacts credentials.\n *\n * `state` and each `log.data` are passed through sanitizeForMessage so the JSON\n * renderers cannot crash on circular references or non-serializable values;\n * `log.time` is kept as a Date for the clock formatter.\n */\nexport const projectApi = (apiId: number, entry: DevToolsApiEntry): ApiInfo => {\n const state: Record<string, unknown> = {};\n const scopes: Array<{\n name: string;\n source: string | null;\n query: Record<string, unknown> | null;\n methods: string[];\n }> = [];\n\n for (const [name, scope] of Object.entries(entry.api)) {\n if (typeof scope !== \"function\" || !(\"source\" in scope)) continue;\n\n let methods: string[] = [];\n try {\n const scopeValue = scope();\n if (scope.source === \"root\") {\n state[name] =\n (scopeValue as { getState?: () => unknown })?.getState?.() ??\n scopeValue;\n }\n methods = readMethods(scopeValue);\n } catch {\n // scope() may throw for derived scopes before the client is mounted.\n }\n\n scopes.push({\n name,\n source: scope.source,\n query: scope.query,\n methods,\n });\n }\n\n let modelContext: ApiInfo[\"modelContext\"];\n try {\n modelContext = serializeModelContext(\n entry.api.thread?.().getModelContext(),\n );\n } catch {\n // A throwing thread()/getModelContext() should not drop the whole api;\n // show partial data (state, scopes, logs) without the model context.\n }\n\n const sanitizedState = sanitizeForMessage(state) as Record<string, unknown>;\n const threadSnapshots = collectThreadSnapshots(entry, sanitizedState);\n\n return {\n id: apiId,\n state: sanitizedState,\n logs: entry.logs.map((log) => ({\n time: log.time,\n event: log.event,\n data: sanitizeForMessage(log.data),\n })),\n modelContext,\n scopes: sanitizeAndRedact(scopes),\n ...(threadSnapshots ? { threadSnapshots } : {}),\n };\n};\n"],"mappings":";;;;;;;;AAmBA,MAAMa,eAAeC,eAAkC;CACrD,IACE,CAACA,cACA,OAAOA,eAAe,YAAY,OAAOA,eAAe,YAEzD,OAAO,CAAA;CACT,IAAI;EACF,OAAOC,OAAOC,KAAKF,UAAU,CAAC,CAACG,QAC5BC,QACC,OAAQJ,WAAuCI,SAAS,UAC5D;CACF,QAAQ;EACN,OAAO,CAAA;CACT;AACF;;;;;;AAyBA,MAAMe,0BACJC,OACAC,UACwC;CACxC,MAAMC,eAAeD,MAAMb;CAC3B,IAAI,CAACrB,SAASmC,YAAY,GAAG,OAAOC,KAAAA;CAEpC,MAAMC,eAAeJ,MAAMzB,IAAIa;CAC/B,IAAI,OAAOgB,iBAAiB,YAAY,OAAOD,KAAAA;CAE/C,IAAIE;CACJ,IAAI;EACFA,gBAAgBD,aAAa;CAC/B,QAAQ;EACN;CACF;CAEA,MAAME,mBAAmBD,cAAclB,iCAAiC;CACxE,IAAI,CAACmB,kBAAkB,OAAOH,KAAAA;CAE9B,MAAMI,YAAY,CAChB,GAAGvC,cAAckC,aAAaK,SAAS,GACvC,GAAGvC,cAAckC,aAAaM,iBAAiB,CAAC;CAElD,IAAID,UAAUE,WAAW,GAAG,OAAON,KAAAA;CAEnC,MAAMO,YAAqC7B,OAAO8B,OAAO,IAAI;CAC7D,KAAK,MAAMrB,YAAYiB,WACrB,IAAI;EACF,MAAMK,gBAAgBN,iBAAiBlB,QAAQC,QAAQC,QAAQ;EAC/D,MAAMuB,cAAcD,cAAcrB,SAAS;EAC3CmB,UAAUpB,YAAYpB,mBAAmB;GACvCsB,UAAUqB,YAAYrB;GACtBC,WAAWoB,YAAYpB;GACvBC,WAAWmB,YAAYnB;GACvBC,YAAYkB,YAAYlB;GACxBC,aAAaiB,YAAYjB;GACzBC,cAAcgB,YAAYhB;GAC1BC,UAAUc,cAAcd,SAASP,SAAS;EAC5C,CAAC;CACH,QAAQ,CACN;CAIJ,OAAOV,OAAOC,KAAK4B,SAAS,CAAC,CAACD,SAAS,IAAI,EAAE,GAAGC,UAAU,IAAIP,KAAAA;AAChE;;;;;;;;;;;AAYA,MAAaW,cAAcC,OAAef,UAAqC;CAC7E,MAAMC,QAAiC,CAAC;CACxC,MAAMe,SAKD,CAAA;CAEL,KAAK,MAAM,CAACE,MAAMI,UAAUzC,OAAO0C,QAAQvB,MAAMzB,GAAG,GAAG;EACrD,IAAI,OAAO+C,UAAU,cAAc,EAAE,YAAYA,QAAQ;EAEzD,IAAID,UAAoB,CAAA;EACxB,IAAI;GACF,MAAMzC,aAAa0C,MAAM;GACzB,IAAIA,MAAMH,WAAW,QACnBlB,MAAMiB,QACHtC,YAA6CW,WAAW,KACzDX;GAEJyC,UAAU1C,YAAYC,UAAU;EAClC,QAAQ,CACN;EAGFoC,OAAOQ,KAAK;GACVN;GACAC,QAAQG,MAAMH;GACdC,OAAOE,MAAMF;GACbC;EACF,CAAC;CACH;CAEA,IAAII;CACJ,IAAI;EACFA,eAAetD,sBACb6B,MAAMzB,IAAImD,SAAS,CAAC,CAACC,gBAAgB,CACvC;CACF,QAAQ,CAEN;CAGF,MAAMC,iBAAiB1D,mBAAmB+B,KAAK;CAC/C,MAAM4B,kBAAkB9B,uBAAuBC,OAAO4B,cAAc;CAEpE,OAAO;EACLE,IAAIf;EACJd,OAAO2B;EACPnD,MAAMuB,MAAMvB,KAAKsD,KAAKC,SAAS;GAC7BC,MAAMD,IAAIC;GACVC,OAAOF,IAAIE;GACXC,MAAMjE,mBAAmB8D,IAAIG,IAAI;EACnC,EAAE;EACFV;EACAT,QAAQ/C,kBAAkB+C,MAAM;EAChC,GAAIa,kBAAkB,EAAEA,gBAAgB,IAAI,CAAC;CAC/C;AACF"}
@@ -1,30 +1,30 @@
1
- import { SerializedModelContext } from "../types.js";
2
- //#region src/data/types.d.ts
3
- interface EventLogEntry {
4
- readonly time: Date;
5
- readonly event: string;
6
- readonly data: unknown;
1
+ import type { SerializedModelContext } from "../types.js";
2
+ export type { SerializedModelContext } from "../types.js";
3
+ export interface EventLogEntry {
4
+ readonly time: Date;
5
+ readonly event: string;
6
+ readonly data: unknown;
7
7
  }
8
- interface ApiInfo {
9
- id: number;
10
- state: Record<string, unknown>;
11
- logs: EventLogEntry[];
12
- modelContext?: SerializedModelContext | undefined;
13
- scopes?: unknown;
14
- /**
15
- * Cached thread states keyed by thread id. Populated for threads whose runtime
16
- * has been mounted (visited in the app). Unvisited threads only appear in
17
- * `state.threads.threadItems`.
18
- */
19
- threadSnapshots?: Readonly<Record<string, unknown>>;
8
+ export interface ApiInfo {
9
+ id: number;
10
+ state: Record<string, unknown>;
11
+ logs: EventLogEntry[];
12
+ modelContext?: SerializedModelContext | undefined;
13
+ scopes?: unknown;
14
+ /**
15
+ * Cached thread states keyed by thread id. Populated for threads whose runtime
16
+ * has been mounted (visited in the app). Unvisited threads only appear in
17
+ * `state.threads.threadItems`.
18
+ */
19
+ threadSnapshots?: Readonly<Record<string, unknown>>;
20
20
  }
21
21
  /**
22
22
  * A JSON-safe view of every inspected instance. The map values are stable until
23
23
  * the next change so it can be returned directly from useSyncExternalStore.
24
24
  */
25
- interface DevToolsSnapshot {
26
- apiIds: number[];
27
- byId: ReadonlyMap<number, ApiInfo>;
25
+ export interface DevToolsSnapshot {
26
+ apiIds: number[];
27
+ byId: ReadonlyMap<number, ApiInfo>;
28
28
  }
29
29
  /**
30
30
  * The transport between the data source and the panel UI. The default
@@ -32,20 +32,18 @@ interface DevToolsSnapshot {
32
32
  * depends on this interface, so the same UI can be driven by a postMessage
33
33
  * bridge, a browser-extension relay, a remote socket, or a fixture for tests.
34
34
  */
35
- interface DevToolsClient {
36
- /** Subscribe to snapshot changes; returns an unsubscribe. */
37
- subscribe(listener: () => void): () => void;
38
- /** The current snapshot. Must return a stable reference until it changes. */
39
- getSnapshot(): DevToolsSnapshot;
40
- /** Snapshot used during SSR/hydration. Defaults to an empty snapshot. */
41
- getServerSnapshot?(): DevToolsSnapshot;
42
- /** Clears the buffered event log for an instance. */
43
- clearEvents(apiId: number): void;
44
- /** Switches the inspected instance to a thread by id, when supported. */
45
- switchToThread?(apiId: number, threadId: string): void | Promise<void>;
35
+ export interface DevToolsClient {
36
+ /** Subscribe to snapshot changes; returns an unsubscribe. */
37
+ subscribe(listener: () => void): () => void;
38
+ /** The current snapshot. Must return a stable reference until it changes. */
39
+ getSnapshot(): DevToolsSnapshot;
40
+ /** Snapshot used during SSR/hydration. Defaults to an empty snapshot. */
41
+ getServerSnapshot?(): DevToolsSnapshot;
42
+ /** Clears the buffered event log for an instance. */
43
+ clearEvents(apiId: number): void;
44
+ /** Switches the inspected instance to a thread by id, when supported. */
45
+ switchToThread?(apiId: number, threadId: string): void | Promise<void>;
46
46
  }
47
47
  /** Shared stable empty snapshot identity for the empty/server state. */
48
- declare const EMPTY_SNAPSHOT: DevToolsSnapshot;
49
- //#endregion
50
- export { ApiInfo, DevToolsClient, DevToolsSnapshot, EMPTY_SNAPSHOT, EventLogEntry, type SerializedModelContext };
48
+ export declare const EMPTY_SNAPSHOT: DevToolsSnapshot;
51
49
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/data/types.ts"],"mappings":";;UAIiB;WACN,MAAM;WACN;WACA;;UAGM;EACf;EACA,OAAO;EACP,MAAM;EACN,eAAe;EACf;;;;;;EAMA,kBAAkB,SAAS;;;;;;UAOZ;EACf;EACA,MAAM,oBAAoB;;;;;;;;UASX;;EAEf,UAAU;;EAEV,eAAe;;EAEf,sBAAsB;;EAEtB,YAAY;;EAEZ,gBAAgB,eAAe,0BAA0B;;;cAI9C,gBAAgB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAiB;AAEvD,YAAY,EAAE,sBAAsB,EAAE,oBAAiB;AAEvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,6EAA6E;IAC7E,WAAW,IAAI,gBAAgB,CAAC;IAChC,yEAAyE;IACzE,iBAAiB,CAAC,IAAI,gBAAgB,CAAC;IACvC,qDAAqD;IACrD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,yEAAyE;IACzE,cAAc,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,EAAE,gBAAkD,CAAC"}
@@ -1,10 +1,9 @@
1
- import { ApiInfo, DevToolsClient } from "./types.js";
2
- //#region src/data/useDevToolsClient.d.ts
3
- interface DevToolsClientResult {
4
- apiIds: number[];
5
- selected: ApiInfo | undefined;
6
- clearEvents: (apiId: number) => void;
7
- switchToThread: (apiId: number, threadId: string) => void | Promise<void>;
1
+ import { type ApiInfo, type DevToolsClient } from "./types.js";
2
+ export interface DevToolsClientResult {
3
+ apiIds: number[];
4
+ selected: ApiInfo | undefined;
5
+ clearEvents: (apiId: number) => void;
6
+ switchToThread: (apiId: number, threadId: string) => void | Promise<void>;
8
7
  }
9
8
  /**
10
9
  * Reads a DevToolsClient snapshot and resolves the selected instance. The panel
@@ -12,7 +11,5 @@ interface DevToolsClientResult {
12
11
  * touching the UI. Pass a stable client reference (the default in-process client
13
12
  * is a module singleton; memoize custom clients).
14
13
  */
15
- declare const useDevToolsClient: (selectedApiId: number | null, client?: DevToolsClient) => DevToolsClientResult;
16
- //#endregion
17
- export { DevToolsClientResult, useDevToolsClient };
14
+ export declare const useDevToolsClient: (selectedApiId: number | null, client?: DevToolsClient) => DevToolsClientResult;
18
15
  //# sourceMappingURL=useDevToolsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDevToolsClient.d.ts","names":[],"sources":["../../src/data/useDevToolsClient.ts"],"mappings":";;UAIiB;EACf;EACA,UAAU;EACV,cAAc;EACd,iBAAiB,eAAe,4BAA4B;;;;;;;;cASjD,oBACX,8BACA,SAAQ,mBACP"}
1
+ {"version":3,"file":"useDevToolsClient.d.ts","sourceRoot":"","sources":["../../src/data/useDevToolsClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,mBAAgB;AAE5E,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,GAAG,IAAI,EAC5B,SAAQ,cAAgC,KACvC,oBA2CF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { NormalizedTool, normalizeToolList } from "./utils/toolNormalization.js";
2
- import { SerializedModelContext } from "./types.js";
3
- import { ApiInfo, DevToolsClient, DevToolsSnapshot } from "./data/types.js";
4
- import { DevToolsPanelPlugin, DevToolsTabContext, builtinPlugins, createDevToolsPlugin } from "./shell/registry.js";
5
- import { DevToolsModal, DevToolsModalProps } from "./DevToolsModal.js";
6
- import { createInProcessClient, inProcessClient } from "./data/createInProcessClient.js";
7
- import { DevToolsPanel, DevToolsPanelProps } from "./shell/DevToolsPanel.js";
8
- import { ShadowRoot } from "./shell/ShadowRoot.js";
9
- import { serializeModelContext } from "./utils/serialization.js";
10
- export { type ApiInfo, type DevToolsClient, DevToolsModal, type DevToolsModalProps, DevToolsPanel, type DevToolsPanelPlugin, type DevToolsPanelProps, type DevToolsSnapshot, type DevToolsTabContext, type NormalizedTool, type SerializedModelContext, ShadowRoot, builtinPlugins, createDevToolsPlugin, createInProcessClient, inProcessClient, normalizeToolList, serializeModelContext };
1
+ export { DevToolsModal, type DevToolsModalProps } from "./DevToolsModal.js";
2
+ export { DevToolsPanel, type DevToolsPanelProps } from "./shell/DevToolsPanel.js";
3
+ export { ShadowRoot } from "./shell/ShadowRoot.js";
4
+ export { builtinPlugins, createDevToolsPlugin, type DevToolsPanelPlugin, type DevToolsTabContext, } from "./shell/registry.js";
5
+ export type { ApiInfo, DevToolsClient, DevToolsSnapshot } from "./data/types.js";
6
+ export { createInProcessClient, inProcessClient, } from "./data/createInProcessClient.js";
7
+ export { normalizeToolList, type NormalizedTool, } from "./utils/toolNormalization.js";
8
+ export { serializeModelContext } from "./utils/serialization.js";
9
+ export type { SerializedModelContext } from "./types.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,2BAAwB;AACzE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,iCAA8B;AAC/E,OAAO,EAAE,UAAU,EAAE,8BAA2B;AAChD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,4BAAyB;AAC1B,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAqB;AAC9E,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,wCAAqC;AACtC,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,GACpB,qCAAkC;AACnC,OAAO,EAAE,qBAAqB,EAAE,iCAA8B;AAC9D,YAAY,EAAE,sBAAsB,EAAE,mBAAgB"}
@@ -1,10 +1,9 @@
1
- import { DevToolsClient } from "../data/types.js";
2
- import { DevToolsPanelPlugin } from "./registry.js";
3
- //#region src/shell/DevToolsOverlay.d.ts
4
- interface DevToolsOverlayProps {
5
- plugins?: DevToolsPanelPlugin[] | undefined;
6
- theme: "light" | "dark";
7
- client?: DevToolsClient | undefined;
1
+ import type { DevToolsPanelPlugin } from "./registry.js";
2
+ import type { DevToolsClient } from "../data/types.js";
3
+ export interface DevToolsOverlayProps {
4
+ plugins?: DevToolsPanelPlugin[] | undefined;
5
+ theme: "light" | "dark";
6
+ client?: DevToolsClient | undefined;
8
7
  }
9
8
  /**
10
9
  * The full devtools surface (floating launcher + window), rendered inside the
@@ -12,7 +11,5 @@ interface DevToolsOverlayProps {
12
11
  * and isolated from the host page. The window floats over the live app with no
13
12
  * backdrop; close with the × or Escape.
14
13
  */
15
- declare const DevToolsOverlay: ({ plugins, theme, client }: DevToolsOverlayProps) => import("react").JSX.Element;
16
- //#endregion
17
- export { DevToolsOverlay, DevToolsOverlayProps };
14
+ export declare const DevToolsOverlay: ({ plugins, theme, client, }: DevToolsOverlayProps) => import("react").JSX.Element;
18
15
  //# sourceMappingURL=DevToolsOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsOverlay.d.ts","names":[],"sources":["../../src/shell/DevToolsOverlay.tsx"],"mappings":";;;UAOiB;EACf,UAAU;EACV;EACA,SAAS;;;;;;;;cASE,oBAAmB,SAAA,OAAA,UAI7B,yCAAoB,IAAA"}
1
+ {"version":3,"file":"DevToolsOverlay.d.ts","sourceRoot":"","sources":["../../src/shell/DevToolsOverlay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAmB;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAsB;AAEpD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,6BAI7B,oBAAoB,gCA4DtB,CAAC"}
@@ -1,17 +1,14 @@
1
- import { DevToolsClient } from "../data/types.js";
2
- import { DevToolsPanelPlugin } from "./registry.js";
3
- //#region src/shell/DevToolsPanel.d.ts
4
- interface DevToolsPanelProps {
5
- /** Additional inspector tabs appended after the builtins. */
6
- plugins?: DevToolsPanelPlugin[] | undefined;
7
- /** Resolved theme, used to style plugin content and the dark variant. */
8
- theme?: "light" | "dark";
9
- /** When provided, a close control is rendered at the end of the tab bar. */
10
- onClose?: (() => void) | undefined;
11
- /** Data source. Defaults to the in-process DevToolsHooks client. */
12
- client?: DevToolsClient | undefined;
1
+ import type { DevToolsClient } from "../data/types.js";
2
+ import { type DevToolsPanelPlugin } from "./registry.js";
3
+ export interface DevToolsPanelProps {
4
+ /** Additional inspector tabs appended after the builtins. */
5
+ plugins?: DevToolsPanelPlugin[] | undefined;
6
+ /** Resolved theme, used to style plugin content and the dark variant. */
7
+ theme?: "light" | "dark";
8
+ /** When provided, a close control is rendered at the end of the tab bar. */
9
+ onClose?: (() => void) | undefined;
10
+ /** Data source. Defaults to the in-process DevToolsHooks client. */
11
+ client?: DevToolsClient | undefined;
13
12
  }
14
- declare const DevToolsPanel: ({ plugins, theme, onClose, client }: DevToolsPanelProps) => import("react").JSX.Element;
15
- //#endregion
16
- export { DevToolsPanel, DevToolsPanelProps };
13
+ export declare const DevToolsPanel: ({ plugins, theme, onClose, client, }: DevToolsPanelProps) => import("react").JSX.Element;
17
14
  //# sourceMappingURL=DevToolsPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsPanel.d.ts","names":[],"sources":["../../src/shell/DevToolsPanel.tsx"],"mappings":";;;UAciB;;EAEf,UAAU;;EAEV;;EAEA;;EAEA,SAAS;;cAGE,kBAAiB,SAAA,OAAA,SAAA,UAK3B,uCAAkB,IAAA"}
1
+ {"version":3,"file":"DevToolsPanel.d.ts","sourceRoot":"","sources":["../../src/shell/DevToolsPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAsB;AAEpD,OAAO,EAEL,KAAK,mBAAmB,EAEzB,sBAAmB;AAEpB,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC5C,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,oEAAoE;IACpE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,eAAO,MAAM,aAAa,GAAI,sCAK3B,kBAAkB,gCAmKpB,CAAC"}
@@ -1,10 +1,9 @@
1
- import { CSSProperties, ReactNode } from "react";
2
- //#region src/shell/ShadowRoot.d.ts
3
- interface ShadowRootProps {
4
- theme: "light" | "dark";
5
- className?: string;
6
- style?: CSSProperties;
7
- children: ReactNode;
1
+ import { type CSSProperties, type ReactNode } from "react";
2
+ export interface ShadowRootProps {
3
+ theme: "light" | "dark";
4
+ className?: string;
5
+ style?: CSSProperties;
6
+ children: ReactNode;
8
7
  }
9
8
  /**
10
9
  * Renders its children into an isolated shadow root with the compiled panel
@@ -12,7 +11,5 @@ interface ShadowRootProps {
12
11
  * React's event delegation works (a portal from the outer root would leave the
13
12
  * listeners in the light DOM, where shadow retargeting breaks them).
14
13
  */
15
- declare const ShadowRoot: ({ theme, className, style, children }: ShadowRootProps) => import("react").JSX.Element;
16
- //#endregion
17
- export { ShadowRoot, ShadowRootProps };
14
+ export declare const ShadowRoot: ({ theme, className, style, children, }: ShadowRootProps) => import("react").JSX.Element;
18
15
  //# sourceMappingURL=ShadowRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShadowRoot.d.ts","names":[],"sources":["../../src/shell/ShadowRoot.tsx"],"mappings":";;UAwBiB;EACf;EACA;EACA,QAAQ;EACR,UAAU;;;;;;;;cASC,eAAc,OAAA,WAAA,OAAA,YAKxB,oCAAe,IAAA"}
1
+ {"version":3,"file":"ShadowRoot.d.ts","sourceRoot":"","sources":["../../src/shell/ShadowRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAsB9E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,wCAKxB,eAAe,gCA0CjB,CAAC"}
@@ -1,24 +1,21 @@
1
- import { ReactNode } from "react";
2
- //#region src/shell/SplitLayout.d.ts
1
+ import type { ReactNode } from "react";
3
2
  /** Shared nav rail + detail track sizing for the master/detail tabs. */
4
- declare const NAV_COL = "clamp(14rem,28%,18rem)_minmax(0,1fr)";
5
- interface SplitColumn {
6
- key: string;
7
- /** Fixed rail header; stays aligned across columns. */
8
- header?: ReactNode | undefined;
9
- /** Scrollable pane body. */
10
- children: ReactNode;
3
+ export declare const NAV_COL = "clamp(14rem,28%,18rem)_minmax(0,1fr)";
4
+ export interface SplitColumn {
5
+ key: string;
6
+ /** Fixed rail header; stays aligned across columns. */
7
+ header?: ReactNode | undefined;
8
+ /** Scrollable pane body. */
9
+ children: ReactNode;
11
10
  }
12
11
  /**
13
12
  * Multi-column split surface. Each column keeps its header fixed and only the
14
13
  * body scrolls, so rail titles and divider lines stay aligned across columns.
15
14
  */
16
- declare const SplitLayout: ({ sizes, columns, className }: {
17
- /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */
18
- sizes: string;
19
- columns: SplitColumn[];
20
- className?: string | undefined;
15
+ export declare const SplitLayout: ({ sizes, columns, className, }: {
16
+ /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */
17
+ sizes: string;
18
+ columns: SplitColumn[];
19
+ className?: string | undefined;
21
20
  }) => import("react").JSX.Element;
22
- //#endregion
23
- export { NAV_COL, SplitColumn, SplitLayout };
24
21
  //# sourceMappingURL=SplitLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplitLayout.d.ts","names":[],"sources":["../../src/shell/SplitLayout.tsx"],"mappings":";;;cAIa;UAEI;EACf;;EAEA,SAAS;;EAET,UAAU;;;;;;cAOC,gBAAe,OAAA,SAAA;;EAM1B;EACA,SAAS;EACT;sBACD,IAAA"}
1
+ {"version":3,"file":"SplitLayout.d.ts","sourceRoot":"","sources":["../../src/shell/SplitLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wEAAwE;AACxE,eAAO,MAAM,OAAO,yCAAyC,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,4BAA4B;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,gCAIzB;IACD,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,gCAkBA,CAAC"}
@@ -1,40 +1,37 @@
1
- import { ApiInfo } from "../data/types.js";
2
- import { ComponentType } from "react";
3
- //#region src/shell/registry.d.ts
4
- interface DevToolsTabContext {
5
- /** The id of the assistant instance the panel is currently inspecting. */
6
- apiId: number;
7
- /** Projected, render-ready data for the inspected instance. */
8
- data: ApiInfo;
9
- /** Clears the buffered event log for an instance. */
10
- clearEvents: (apiId: number) => void;
11
- /** The resolved theme of the panel. */
12
- theme: "light" | "dark";
13
- /**
14
- * The selected node id for this tab and instance, or null. Always a stable id
15
- * (message id, run id, slice key, …), never an array index, so the detail
16
- * pane does not jump as data streams in.
17
- */
18
- selection: string | null;
19
- /** Selects a node in this tab. Pass null to clear. Persisted per instance. */
20
- setSelection: (nodeId: string | null) => void;
21
- /** Switches the live app to a thread, when the runtime supports thread lists. */
22
- switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;
1
+ import type { ComponentType } from "react";
2
+ import type { ApiInfo } from "../data/types.js";
3
+ export interface DevToolsTabContext {
4
+ /** The id of the assistant instance the panel is currently inspecting. */
5
+ apiId: number;
6
+ /** Projected, render-ready data for the inspected instance. */
7
+ data: ApiInfo;
8
+ /** Clears the buffered event log for an instance. */
9
+ clearEvents: (apiId: number) => void;
10
+ /** The resolved theme of the panel. */
11
+ theme: "light" | "dark";
12
+ /**
13
+ * The selected node id for this tab and instance, or null. Always a stable id
14
+ * (message id, run id, slice key, …), never an array index, so the detail
15
+ * pane does not jump as data streams in.
16
+ */
17
+ selection: string | null;
18
+ /** Selects a node in this tab. Pass null to clear. Persisted per instance. */
19
+ setSelection: (nodeId: string | null) => void;
20
+ /** Switches the live app to a thread, when the runtime supports thread lists. */
21
+ switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;
23
22
  }
24
- interface DevToolsPanelPlugin {
25
- /** Stable identifier used as the tab key. */
26
- id: string;
27
- /** Tab label shown in the navigation bar. */
28
- label: string;
29
- /** Lower numbers sort earlier; builtins occupy 10, 20, 30, 40. */
30
- order?: number;
31
- /** When provided and it returns false, the tab is hidden for the current instance. */
32
- isAvailable?: (ctx: DevToolsTabContext) => boolean;
33
- /** The tab body. Receives the tab context as props. */
34
- Component: ComponentType<DevToolsTabContext>;
23
+ export interface DevToolsPanelPlugin {
24
+ /** Stable identifier used as the tab key. */
25
+ id: string;
26
+ /** Tab label shown in the navigation bar. */
27
+ label: string;
28
+ /** Lower numbers sort earlier; builtins occupy 10, 20, 30, 40. */
29
+ order?: number;
30
+ /** When provided and it returns false, the tab is hidden for the current instance. */
31
+ isAvailable?: (ctx: DevToolsTabContext) => boolean;
32
+ /** The tab body. Receives the tab context as props. */
33
+ Component: ComponentType<DevToolsTabContext>;
35
34
  }
36
- declare const createDevToolsPlugin: (plugin: DevToolsPanelPlugin) => DevToolsPanelPlugin;
37
- declare const builtinPlugins: DevToolsPanelPlugin[];
38
- //#endregion
39
- export { DevToolsPanelPlugin, DevToolsTabContext, builtinPlugins, createDevToolsPlugin };
35
+ export declare const createDevToolsPlugin: (plugin: DevToolsPanelPlugin) => DevToolsPanelPlugin;
36
+ export declare const builtinPlugins: DevToolsPanelPlugin[];
40
37
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","names":[],"sources":["../../src/shell/registry.ts"],"mappings":";;;UAOiB;;EAEf;;EAEA,MAAM;;EAEN,cAAc;;EAEd;;;;;;EAMA;;EAEA,eAAe;;EAEf,mBAAmB,4BAA4B;;UAGhC;;EAEf;;EAEA;;EAEA;;EAEA,eAAe,KAAK;;EAEpB,WAAW,cAAc;;cAGd,uBACX,QAAQ,wBACP;cAEU,gBAAgB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/shell/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAsB;AAM7C,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,uCAAuC;IACvC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8EAA8E;IAC9E,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACnD,uDAAuD;IACvD,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,mBAAmB,KAC1B,mBAA6B,CAAC;AAEjC,eAAO,MAAM,cAAc,EAAE,mBAAmB,EAK/C,CAAC"}
@@ -1,6 +1,3 @@
1
- import { DevToolsTabContext } from "../registry.js";
2
- //#region src/shell/tabs/ActivityTab.d.ts
3
- declare const ActivityTab: ({ apiId, data, clearEvents, selection, setSelection }: DevToolsTabContext) => import("react").JSX.Element;
4
- //#endregion
5
- export { ActivityTab };
1
+ import type { DevToolsTabContext } from "../registry.js";
2
+ export declare const ActivityTab: ({ apiId, data, clearEvents, selection, setSelection, }: DevToolsTabContext) => import("react").JSX.Element;
6
3
  //# sourceMappingURL=ActivityTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityTab.d.ts","names":[],"sources":["../../../src/shell/tabs/ActivityTab.tsx"],"mappings":";;cA6Ba,gBAAe,OAAA,MAAA,aAAA,WAAA,gBAMzB,uCAAkB,IAAA"}
1
+ {"version":3,"file":"ActivityTab.d.ts","sourceRoot":"","sources":["../../../src/shell/tabs/ActivityTab.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAoB;AAgBtD,eAAO,MAAM,WAAW,GAAI,wDAMzB,kBAAkB,gCA6HpB,CAAC"}
@@ -1,6 +1,3 @@
1
- import { DevToolsTabContext } from "../registry.js";
2
- //#region src/shell/tabs/ContextTab.d.ts
3
- declare const ContextTab: ({ data, selection, setSelection }: DevToolsTabContext) => import("react").JSX.Element;
4
- //#endregion
5
- export { ContextTab };
1
+ import type { DevToolsTabContext } from "../registry.js";
2
+ export declare const ContextTab: ({ data, selection, setSelection, }: DevToolsTabContext) => import("react").JSX.Element;
6
3
  //# sourceMappingURL=ContextTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextTab.d.ts","names":[],"sources":["../../../src/shell/tabs/ContextTab.tsx"],"mappings":";;cAuCa,eAAc,MAAA,WAAA,gBAIxB,uCAAkB,IAAA"}
1
+ {"version":3,"file":"ContextTab.d.ts","sourceRoot":"","sources":["../../../src/shell/tabs/ContextTab.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAoB;AA2BtD,eAAO,MAAM,UAAU,GAAI,oCAIxB,kBAAkB,gCAiHpB,CAAC"}