@tangle-network/sandbox-ui 0.137.1 → 0.138.0

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 (92) hide show
  1. package/dist/{WorkflowGraph-BcuJ0kgt.js → WorkflowGraph-DXmu60At.js} +4 -7
  2. package/dist/assets.d.ts +0 -18
  3. package/dist/assets.js +9 -17
  4. package/dist/{auth-CWe17Hly.js → auth-BDpoZ_2f.js} +1 -2
  5. package/dist/auth.d.ts +1 -1
  6. package/dist/auth.js +1 -2
  7. package/dist/{chat-_aHUfqtH.js → chat-BYTVLZQW.js} +9 -15
  8. package/dist/chat.d.ts +1 -1
  9. package/dist/chat.js +1 -2
  10. package/dist/{connections-C5DxYxvz.js → connections-DymjzHe_.js} +1 -2
  11. package/dist/connections.d.ts +1 -1
  12. package/dist/connections.js +1 -2
  13. package/dist/connectors.d.ts +0 -10
  14. package/dist/connectors.js +5 -9
  15. package/dist/{dashboard-SFakZEtu.js → dashboard-ClKA3opr.js} +31 -55
  16. package/dist/dashboard.d.ts +3 -3
  17. package/dist/dashboard.js +3 -3
  18. package/dist/diff-view-A0O0Z_SR.js +287 -0
  19. package/dist/diff-view-DDHWtR6X.d.ts +21 -0
  20. package/dist/editor.js +1 -2
  21. package/dist/{embedded-app-view-CYb9hevq.js → embedded-app-view-DXsoPale.js} +5 -8
  22. package/dist/{embedded-app-view-B_vMTtJn.d.ts → embedded-app-view-Ta5GI4hx.d.ts} +0 -4
  23. package/dist/files.js +1 -2
  24. package/dist/globals.css +43 -0
  25. package/dist/hooks.d.ts +3 -7
  26. package/dist/hooks.js +4 -6
  27. package/dist/{index-DsU8ts9f.d.ts → index-BAEvGqrn.d.ts} +0 -4
  28. package/dist/{index-DvmZLMT1.d.ts → index-BbfWVtZq.d.ts} +0 -2
  29. package/dist/index-C5h5T0nb.d.ts +91 -0
  30. package/dist/{index-ByzdHyte.d.ts → index-CvtEhIpk.d.ts} +25 -52
  31. package/dist/{index-ClRHbsoX.d.ts → index-DLX35YAa.d.ts} +0 -2
  32. package/dist/{index-AVDzT8Jw.d.ts → index-DRDtTgb0.d.ts} +2 -54
  33. package/dist/{index-C61CTrhx.d.ts → index-F42BOxUM.d.ts} +15 -37
  34. package/dist/{index-QBCEflyf.d.ts → index-ucJHuuVZ.d.ts} +2 -8
  35. package/dist/{index-DGil6iqm.d.ts → index-y2OPUSoY.d.ts} +0 -4
  36. package/dist/index.d.ts +17 -16
  37. package/dist/index.js +24 -20
  38. package/dist/integrations.d.ts +0 -14
  39. package/dist/integrations.js +6 -11
  40. package/dist/markdown.js +1 -2
  41. package/dist/{model-brand-B57CV8Lg.d.ts → model-brand-ZwVS49Fq.d.ts} +0 -2
  42. package/dist/{model-brand-BSr9on8C.js → model-brand-bTcMjQtB.js} +34 -67
  43. package/dist/{motion-D4njYpys.js → motion-Bn7ESHrj.js} +1 -2
  44. package/dist/{node-output-fuk0NV0V.js → node-output-udnwhShN.js} +9 -16
  45. package/dist/openui.js +1 -2
  46. package/dist/{page-layout-2IRtfx51.js → page-layout-CuOpvZys.js} +5 -9
  47. package/dist/pages.d.ts +2 -14
  48. package/dist/pages.js +9 -15
  49. package/dist/{primitives-CLOVnjWz.js → primitives-CiwDp4-0.js} +4 -7
  50. package/dist/primitives.d.ts +1 -1
  51. package/dist/primitives.js +1 -2
  52. package/dist/{provider-logo-BGCziCbM.js → provider-logo-CPKRPHcS.js} +1 -2
  53. package/dist/{rolldown-runtime-BBjsoOtd.js → rolldown-runtime-782esTHO.js} +1 -2
  54. package/dist/run-CliTxkfw.js +397 -0
  55. package/dist/run.d.ts +2 -2
  56. package/dist/run.js +1 -2
  57. package/dist/sdk-hooks.d.ts +1 -1
  58. package/dist/sdk-hooks.js +1 -1
  59. package/dist/{shell-header-CTh3oV_e.js → shell-header-CwqDzC4I.js} +2 -3
  60. package/dist/{sidecar-DgH_vQ6m.d.ts → sidecar-CNP4zXop.d.ts} +0 -2
  61. package/dist/stores.d.ts +0 -2
  62. package/dist/stores.js +1 -2
  63. package/dist/styles.css +43 -0
  64. package/dist/{terminal-X6r5pjgv.js → terminal-nUCznZRj.js} +3 -5
  65. package/dist/terminal.d.ts +1 -3
  66. package/dist/terminal.js +1 -2
  67. package/dist/{tree-data-DtoCNNBJ.js → tree-data-YXtcK6Ld.js} +2 -4
  68. package/dist/types.d.ts +1 -1
  69. package/dist/{usage-chart-BjM8ShvX.d.ts → usage-chart-BFpdkqNq.d.ts} +0 -6
  70. package/dist/{use-pty-session-B5Q_i9RI.js → use-pty-session-BHVQlSs-.js} +1 -2
  71. package/dist/{use-pty-session-DbAYO5uH.d.ts → use-pty-session-DSgtQyYX.d.ts} +0 -2
  72. package/dist/{use-sidecar-auth-CCTJcrq7.d.ts → use-sidecar-auth-CPevSSEj.d.ts} +0 -4
  73. package/dist/{use-sidecar-auth-DkdcufOz.js → use-sidecar-auth-DpG0aWQ3.js} +3 -6
  74. package/dist/utils-BER_bdgE.js +1 -0
  75. package/dist/utils.js +1 -2
  76. package/dist/vault-tree.d.ts +1 -1
  77. package/dist/vault-tree.js +1 -2
  78. package/dist/workbench/diff.d.ts +2 -0
  79. package/dist/workbench/diff.js +1 -0
  80. package/dist/workbench/embedded-app.d.ts +1 -1
  81. package/dist/workbench/embedded-app.js +1 -2
  82. package/dist/workbench-B3JL1qbt.js +892 -0
  83. package/dist/workbench.d.ts +4 -3
  84. package/dist/workbench.js +4 -3
  85. package/dist/workflows.d.ts +1 -13
  86. package/dist/workflows.js +4 -5
  87. package/dist/{workspace-cjk0axyT.js → workspace-DRhi6S3o.js} +325 -141
  88. package/dist/workspace.d.ts +1 -1
  89. package/dist/workspace.js +2 -2
  90. package/package.json +36 -28
  91. package/dist/utils-DzWbktWG.js +0 -2
  92. package/dist/workbench-DPZ6LXqf.js +0 -8136
@@ -1,11 +1,11 @@
1
- import { t as cn$1 } from "./utils-DzWbktWG.js";
2
- import { r as ShellHeader } from "./shell-header-CTh3oV_e.js";
1
+ import { t as cn$1 } from "./utils-BER_bdgE.js";
2
+ import { r as ShellHeader } from "./shell-header-CwqDzC4I.js";
3
3
  import { Button } from "@tangle-network/ui/primitives";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import * as React$1 from "react";
6
6
  import { ExternalLink, RotateCw } from "lucide-react";
7
7
  import { focusField } from "@tangle-network/ui/utils";
8
- //#region src/workbench/preview-policy.ts
8
+ // src/workbench/preview-policy.ts
9
9
  /** Only an actual verified HTTP outcome can establish application readiness. */
10
10
  function previewReadinessLabel(readiness) {
11
11
  if (readiness?.state === "checking") return "Checking application readiness";
@@ -35,8 +35,7 @@ function safePreviewUrl(value, base, allowedOrigins) {
35
35
  if (allowedOrigins && !allowedOrigins.includes(url.origin)) throw new Error("That origin is not approved for this sandbox preview.");
36
36
  return url.href;
37
37
  }
38
- //#endregion
39
- //#region src/workbench/preview-view.tsx
38
+ // src/workbench/preview-view.tsx
40
39
  function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness, onNavigate, variant = "browser", title = "Sandbox preview", toolbarActions, className }) {
41
40
  const initial = React$1.useMemo(() => {
42
41
  try {
@@ -274,8 +273,7 @@ function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness,
274
273
  ]
275
274
  });
276
275
  }
277
- //#endregion
278
- //#region src/workbench/embedded-app-view.tsx
276
+ // src/workbench/embedded-app-view.tsx
279
277
  /**
280
278
  * An app-sized preview surface for a product workspace.
281
279
  * The host owns app discovery, persistence, access policy, and readiness checks.
@@ -341,5 +339,4 @@ function EmbeddedAppView({ app, allowedOrigins, readiness, access, toolbarAction
341
339
  })
342
340
  });
343
341
  }
344
- //#endregion
345
342
  export { PreviewView as n, EmbeddedAppView as t };
@@ -1,5 +1,4 @@
1
1
  import * as React$1 from "react";
2
- //#region src/workbench/preview-policy.d.ts
3
2
  type PreviewReadiness = {
4
3
  state: "unknown";
5
4
  } | {
@@ -20,8 +19,6 @@ type PreviewAccess = {
20
19
  source: "enforced-policy";
21
20
  expiresAt?: string;
22
21
  };
23
- //#endregion
24
- //#region src/workbench/embedded-app-view.d.ts
25
22
  interface EmbeddedApp {
26
23
  /** Stable app identity. The host uses it to preserve selection across updates. */
27
24
  id: string;
@@ -51,5 +48,4 @@ interface EmbeddedAppViewProps {
51
48
  * The host owns app discovery, persistence, access policy, and readiness checks.
52
49
  */
53
50
  declare function EmbeddedAppView({ app, allowedOrigins, readiness, access, toolbarActions, onRetry, className }: EmbeddedAppViewProps): React$1.JSX.Element;
54
- //#endregion
55
51
  export { PreviewReadiness as a, PreviewAccess as i, EmbeddedAppView as n, EmbeddedAppViewProps as r, EmbeddedApp as t };
package/dist/files.js CHANGED
@@ -1,2 +1 @@
1
- import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "@tangle-network/ui/files";
2
- export { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind };
1
+ export { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "@tangle-network/ui/files";
package/dist/globals.css CHANGED
@@ -397,6 +397,9 @@
397
397
  .bottom-2 {
398
398
  bottom: calc(var(--spacing) * 2);
399
399
  }
400
+ .bottom-3 {
401
+ bottom: calc(var(--spacing) * 3);
402
+ }
400
403
  .bottom-4 {
401
404
  bottom: calc(var(--spacing) * 4);
402
405
  }
@@ -958,6 +961,9 @@
958
961
  .h-\[36rem\] {
959
962
  height: 36rem;
960
963
  }
964
+ .h-\[70vh\] {
965
+ height: 70vh;
966
+ }
961
967
  .h-\[72\%\] {
962
968
  height: 72%;
963
969
  }
@@ -1171,6 +1177,9 @@
1171
1177
  .min-h-\[66px\] {
1172
1178
  min-height: 66px;
1173
1179
  }
1180
+ .min-h-\[70vh\] {
1181
+ min-height: 70vh;
1182
+ }
1174
1183
  .min-h-\[72px\] {
1175
1184
  min-height: 72px;
1176
1185
  }
@@ -1465,6 +1474,9 @@
1465
1474
  .max-w-40 {
1466
1475
  max-width: calc(var(--spacing) * 40);
1467
1476
  }
1477
+ .max-w-48 {
1478
+ max-width: calc(var(--spacing) * 48);
1479
+ }
1468
1480
  .max-w-72 {
1469
1481
  max-width: calc(var(--spacing) * 72);
1470
1482
  }
@@ -2103,6 +2115,9 @@
2103
2115
  .self-start {
2104
2116
  align-self: flex-start;
2105
2117
  }
2118
+ .self-stretch {
2119
+ align-self: stretch;
2120
+ }
2106
2121
  .justify-self-start {
2107
2122
  justify-self: flex-start;
2108
2123
  }
@@ -2274,6 +2289,10 @@
2274
2289
  border-bottom-style: var(--tw-border-style);
2275
2290
  border-bottom-width: 1px;
2276
2291
  }
2292
+ .border-b-0 {
2293
+ border-bottom-style: var(--tw-border-style);
2294
+ border-bottom-width: 0px;
2295
+ }
2277
2296
  .border-b-2 {
2278
2297
  border-bottom-style: var(--tw-border-style);
2279
2298
  border-bottom-width: 2px;
@@ -2709,6 +2728,9 @@
2709
2728
  .bg-\[var\(--status-running\)\] {
2710
2729
  background-color: var(--status-running);
2711
2730
  }
2731
+ .bg-\[var\(--status-running\,\#34c48c\)\] {
2732
+ background-color: var(--status-running,#34c48c);
2733
+ }
2712
2734
  .bg-\[var\(--surface-danger-bg\)\] {
2713
2735
  background-color: var(--surface-danger-bg);
2714
2736
  }
@@ -2940,6 +2962,12 @@
2940
2962
  background-color: color-mix(in oklab, hsl(var(--muted-foreground)) 40%, transparent);
2941
2963
  }
2942
2964
  }
2965
+ .bg-muted-foreground\/50 {
2966
+ background-color: hsl(var(--muted-foreground));
2967
+ @supports (color: color-mix(in lab, red, red)) {
2968
+ background-color: color-mix(in oklab, hsl(var(--muted-foreground)) 50%, transparent);
2969
+ }
2970
+ }
2943
2971
  .bg-muted\/10 {
2944
2972
  background-color: hsl(var(--muted));
2945
2973
  @supports (color: color-mix(in lab, red, red)) {
@@ -4432,6 +4460,9 @@
4432
4460
  --tw-translate-x: calc(var(--spacing) * 0.5);
4433
4461
  translate: var(--tw-translate-x) var(--tw-translate-y);
4434
4462
  }
4463
+ .group-hover\:bg-primary:is(:where(.group):hover *) {
4464
+ background-color: hsl(var(--primary));
4465
+ }
4435
4466
  .group-hover\:bg-primary\/20:is(:where(.group):hover *) {
4436
4467
  background-color: hsl(var(--primary));
4437
4468
  }
@@ -4467,6 +4498,9 @@
4467
4498
  opacity: 100%;
4468
4499
  }
4469
4500
  }
4501
+ .group-focus-visible\:bg-primary:is(:where(.group):focus-visible *) {
4502
+ background-color: hsl(var(--primary));
4503
+ }
4470
4504
  .group-focus-visible\:bg-primary\/30:is(:where(.group):focus-visible *) {
4471
4505
  background-color: hsl(var(--primary));
4472
4506
  @supports (color: color-mix(in lab, red, red)) {
@@ -4600,6 +4634,9 @@
4600
4634
  border-color: color-mix(in oklab, hsl(var(--accent)) 50%, transparent);
4601
4635
  }
4602
4636
  }
4637
+ .hover\:border-border:hover {
4638
+ border-color: hsl(var(--border));
4639
+ }
4603
4640
  .hover\:border-destructive\/30:hover {
4604
4641
  border-color: hsl(var(--destructive));
4605
4642
  }
@@ -5111,6 +5148,9 @@
5111
5148
  .focus-visible\:text-foreground:focus-visible {
5112
5149
  color: hsl(var(--foreground));
5113
5150
  }
5151
+ .focus-visible\:underline:focus-visible {
5152
+ text-decoration-line: underline;
5153
+ }
5114
5154
  .focus-visible\:opacity-100:focus-visible {
5115
5155
  opacity: 100%;
5116
5156
  }
@@ -6149,6 +6189,9 @@
6149
6189
  .\[\&\:not\(\:first-child\)\]\:pt-3:not(:first-child) {
6150
6190
  padding-top: calc(var(--spacing) * 3);
6151
6191
  }
6192
+ .\[\&\>\*\]\:min-h-full > * {
6193
+ min-height: 100%;
6194
+ }
6152
6195
  .\[\&\>\*\]\:max-w-full > * {
6153
6196
  max-width: 100%;
6154
6197
  }
package/dist/hooks.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions } from "./use-pty-session-DbAYO5uH.js";
2
- import { t as Session } from "./sidecar-DgH_vQ6m.js";
3
- import { a as SendMessageOptions, c as SessionStreamError, d as useSessionStream, i as SESSION_STREAM_RECONNECT_DELAY_MS, l as UseSessionStreamOptions, n as UseSidecarAuthOptions, o as SessionDegradation, r as useSidecarAuth, s as SessionInfo, t as SidecarAuth, u as UseSessionStreamResult } from "./use-sidecar-auth-CCTJcrq7.js";
1
+ import { n as UsePtySessionReturn, r as usePtySession, t as UsePtySessionOptions } from "./use-pty-session-DSgtQyYX.js";
2
+ import { t as Session } from "./sidecar-CNP4zXop.js";
3
+ import { a as SendMessageOptions, c as SessionStreamError, d as useSessionStream, i as SESSION_STREAM_RECONNECT_DELAY_MS, l as UseSessionStreamOptions, n as UseSidecarAuthOptions, o as SessionDegradation, r as useSidecarAuth, s as SessionInfo, t as SidecarAuth, u as UseSessionStreamResult } from "./use-sidecar-auth-CPevSSEj.js";
4
4
  import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, ConnectionState, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
5
- //#region src/hooks/use-sandbox-metrics.d.ts
6
5
  /**
7
6
  * Sandbox-level telemetry collected by the sidecar from cgroup v2
8
7
  * (Docker) or /proc (Firecracker guest). `cpuPercent` is computed
@@ -128,8 +127,6 @@ export interface UseSandboxMetricsResult {
128
127
  * by the sandbox overview dashboard to drive live CPU/memory panels.
129
128
  */
130
129
  export declare function useSandboxMetrics({ apiBaseUrl, sandboxId, token, enabled, intervalMs, historyLimit }: UseSandboxMetricsOptions): UseSandboxMetricsResult;
131
- //#endregion
132
- //#region src/hooks/use-session-crud.d.ts
133
130
  /** List all sessions for a sidecar. */
134
131
  export declare function useSessions(apiUrl: string, token: string | null): import("@tanstack/react-query").UseQueryResult<Session[], Error>;
135
132
  /** Create a new session. */
@@ -141,5 +138,4 @@ export declare function useRenameSession(apiUrl: string, token: string | null):
141
138
  sessionId: string;
142
139
  title: string;
143
140
  }, unknown>;
144
- //#endregion
145
141
  export { type AgentStreamEvent, type AppendUserMessageOptions, type ApplySdkEventOptions, type AuthUser, type AutomationStreamEvent, type BeginAssistantMessageOptions, type BotStreamEvent, type CompleteAssistantMessageOptions, type ConnectionState, type RealtimeSessionOptions, RealtimeSessionRegistry, type RealtimeSessionRegistryProps, type RealtimeSessionState, type RealtimeSessionTarget, SESSION_STREAM_RECONNECT_DELAY_MS, type SSEEvent, type SdkSessionAttachment, type SdkSessionEvent, type SdkSessionSeed, SendMessageOptions, SessionDegradation, SessionInfo, SessionStreamError, SidecarAuth, type TaskStreamEvent, type TerminalStreamEvent, type UseAuthOptions, type UseAuthResult, UsePtySessionOptions, UsePtySessionReturn, type UseRunGroupsOptions, type UseSSEStreamOptions, type UseSSEStreamResult, type UseSdkSessionOptions, type UseSdkSessionReturn, UseSessionStreamOptions, UseSessionStreamResult, UseSidecarAuthOptions, type UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, usePtySession, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useSessionStream, useSidecarAuth, useToolCallStream };
package/dist/hooks.js CHANGED
@@ -1,9 +1,9 @@
1
- import { t as usePtySession } from "./use-pty-session-B5Q_i9RI.js";
2
- import { i as useSessionStream, n as SESSION_STREAM_RECONNECT_DELAY_MS, r as SessionStreamError, t as useSidecarAuth } from "./use-sidecar-auth-DkdcufOz.js";
1
+ import { t as usePtySession } from "./use-pty-session-BHVQlSs-.js";
2
+ import { i as useSessionStream, n as SESSION_STREAM_RECONNECT_DELAY_MS, r as SessionStreamError, t as useSidecarAuth } from "./use-sidecar-auth-DpG0aWQ3.js";
3
3
  import * as React$1 from "react";
4
4
  import { RealtimeSessionRegistry, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
5
5
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
6
- //#region src/hooks/use-sandbox-metrics.ts
6
+ // src/hooks/use-sandbox-metrics.ts
7
7
  const METRICS_REQUEST_TIMEOUT_MS = 15e3;
8
8
  /**
9
9
  * Polls the sandbox's sidecar metrics through the API proxy and
@@ -144,8 +144,7 @@ function useSandboxMetrics({ apiBaseUrl, sandboxId, token, enabled = true, inter
144
144
  lastUpdatedAt
145
145
  };
146
146
  }
147
- //#endregion
148
- //#region src/hooks/use-session-crud.ts
147
+ // src/hooks/use-session-crud.ts
149
148
  async function sessionFetch(apiUrl, token, path, opts) {
150
149
  const res = await fetch(`${apiUrl}${path}`, {
151
150
  ...opts,
@@ -231,5 +230,4 @@ function useRenameSession(apiUrl, token) {
231
230
  }
232
231
  });
233
232
  }
234
- //#endregion
235
233
  export { RealtimeSessionRegistry, SESSION_STREAM_RECONNECT_DELAY_MS, SessionStreamError, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useLiveTime, usePtySession, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessionStream, useSessions, useSidecarAuth, useToolCallStream };
@@ -1,7 +1,6 @@
1
1
  import { HeadingVariant, PageHeaderProps } from "@tangle-network/ui/primitives";
2
2
  import { TangleKnot as TangleKnot$1 } from "@tangle-network/brand";
3
3
  import { ElementType, HTMLAttributes, ReactNode } from "react";
4
- //#region src/primitives/logo.d.ts
5
4
  interface LogoProps {
6
5
  variant?: "sandbox";
7
6
  size?: "sm" | "md" | "lg" | "xl";
@@ -13,8 +12,6 @@ declare function Logo$1({ variant, size, className, iconOnly }: LogoProps): impo
13
12
  declare namespace Logo$1 {
14
13
  var displayName: string;
15
14
  }
16
- //#endregion
17
- //#region src/primitives/heading.d.ts
18
15
  /** Preserve the existing public type's required visual role and children.
19
16
  * The binding above remains UI's object, without a local render function.
20
17
  */
@@ -26,5 +23,4 @@ interface HeadingProps extends Omit<HTMLAttributes<HTMLElement>, "role"> {
26
23
  type SectionTitleProps = Pick<PageHeaderProps, "title" | "description" | "action" | "className">;
27
24
  /** Compatibility name for the canonical nested (h2) page header. */
28
25
  declare function SectionTitle(props: SectionTitleProps): import("react").JSX.Element;
29
- //#endregion
30
26
  export { LogoProps as a, Logo$1 as i, SectionTitle as n, TangleKnot$1 as o, SectionTitleProps as r, HeadingProps as t };
@@ -1,7 +1,6 @@
1
1
  import { ButtonProps } from "@tangle-network/ui/primitives";
2
2
  import * as React$1 from "react";
3
3
  import { AuthHeader, AuthHeaderProps, GitHubLoginButton, GitHubLoginButtonProps, LoginLayout, LoginLayoutProps, SessionUser, UserMenu, UserMenuProps } from "@tangle-network/ui/auth";
4
- //#region src/auth/tangle-login-button.d.ts
5
4
  interface TangleLoginButtonProps extends Omit<ButtonProps, "onClick"> {
6
5
  /**
7
6
  * Consumer-app endpoint that starts the cross-site SSO flow. The
@@ -26,5 +25,4 @@ interface TangleLoginButtonProps extends Omit<ButtonProps, "onClick"> {
26
25
  * server owns the platform URL construction.
27
26
  */
28
27
  declare function TangleLoginButton({ authUrl, variant, className, children, ...props }: TangleLoginButtonProps): React$1.JSX.Element;
29
- //#endregion
30
28
  export { LoginLayout as a, UserMenu as c, TangleLoginButtonProps as d, GitHubLoginButtonProps as i, UserMenuProps as l, AuthHeaderProps as n, LoginLayoutProps as o, GitHubLoginButton as r, SessionUser as s, AuthHeader as t, TangleLoginButton as u };
@@ -0,0 +1,91 @@
1
+ import { ReactNode } from "react";
2
+ import { ApprovalCard, ApprovalCardProps, ApprovalDiffFile, ApprovalDiffSummary, ApprovalPlanStep, ExpandedToolDetail, ExpandedToolDetailProps, FeedSegment, InlineThinkingItem as InlineThinkingItem$1, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps, RunPhase, RunPhaseList, RunRowShell, RunRowShellProps, RunRowStatus, RunRowStatusDot, TaskList, TaskListItem, TaskListProps, TaskStatus, ToolCallData, ToolCallData as ToolCallData$1, ToolCallFeed, ToolCallFeedProps, ToolCallStatus, ToolCallType, parseToolEvent, showsTaskPriority, taskProgress, taskStatus } from "@tangle-network/ui/run";
3
+ import { FlowWaterfallProps } from "@tangle-network/charts/react";
4
+ import { FlowMarker, FlowSpan, FlowTrace } from "@tangle-network/charts";
5
+ /** Agent and model spans show their lab/host mark; tool spans show their provider's mark. Unknown keeps the kind glyph. */
6
+ declare function traceSpanMark(span: FlowSpan): ReactNode;
7
+ type TraceWaterfallProps = FlowWaterfallProps;
8
+ /**
9
+ * The run inspector: the agent timeline (`defaultView="agents"`) and the span waterfall over one clock, from
10
+ * `@tangle-network/charts`, with Sandbox UI's brand marks. Feed it `otlpFlowTrace(spans)` from the
11
+ * `traces convert` contract. Import `@tangle-network/charts/react/flow-waterfall.css` once.
12
+ */
13
+ declare function TraceWaterfall({ renderIcon, ...props }: TraceWaterfallProps): import("react").JSX.Element;
14
+ /** A moment on the run's event track: a release, a check verdict, a spawn, a crash or a steer. */
15
+ interface TraceEvent extends FlowMarker {}
16
+ interface TraceWorkspaceProps extends Omit<TraceWaterfallProps, "trace" | "markers" | "onSelect" | "onTimeChange" | "selectedId" | "onDeselect"> {
17
+ trace: FlowTrace;
18
+ /** The selected agent's message stream (Server-Sent Events: rows, reset, end; reconnects with ?after=lastSeq). */
19
+ streamUrl?: (agentId: string) => string;
20
+ events?: TraceEvent[];
21
+ /** The time the reader moved to, in trace ms; null while following live or showing the whole run. */
22
+ onTimeChange?: (t: number | null) => void;
23
+ /**
24
+ * The code workspace as of the cursor and scoped to the selected agent, usually a WorkspaceFilesPane: the page answers
25
+ * the as-of query. It spans the full width and at least 70% of the viewport. Keep its key on the commit so a scrub
26
+ * keeps its state.
27
+ */
28
+ files?: ReactNode;
29
+ /** The scoreboard as of the cursor, under the code workspace; omitted when not given. */
30
+ scoreboard?: ReactNode;
31
+ selectedAgentId?: string;
32
+ /** Called with the agent the reader selected, or undefined when they close its drawer or press Escape. */
33
+ onSelectAgent?: (agentId: string | undefined) => void;
34
+ className?: string;
35
+ }
36
+ /**
37
+ * The run workspace: the agent timeline and span waterfall over one clock, the selected agent's conversation
38
+ * streaming in a right-hand drawer, and the page's code workspace and scoreboard following the time cursor. Scrubbing is time travel:
39
+ * every panel shows what was true at the cursor, and the conversation shows what had been said by then.
40
+ */
41
+ declare function TraceWorkspace({ trace, streamUrl, events, onTimeChange, files, scoreboard, selectedAgentId, onSelectAgent, className, ...waterfall }: TraceWorkspaceProps): import("react").JSX.Element;
42
+ /** One row of an agent's message stream (tangle-tools `/api/discovery/runs/<run>/agents/<agent>/stream`). */
43
+ interface AgentStreamRow {
44
+ seq: number;
45
+ /** ISO time the event happened. */
46
+ at: string;
47
+ stream?: string;
48
+ attempt?: number;
49
+ event: {
50
+ kind: "text" | "reasoning" | "tool-call" | "tool-result" | "user" | (string & {});
51
+ text?: string;
52
+ toolCallId?: string;
53
+ toolName?: string;
54
+ args?: unknown;
55
+ result?: unknown;
56
+ };
57
+ }
58
+ /** A transcript entry with the time it began, so a time cursor can show the conversation as of any moment. */
59
+ type AgentTranscriptEntry = {
60
+ id: string;
61
+ at: number;
62
+ kind: "message";
63
+ role: "assistant" | "user";
64
+ content: string;
65
+ } | {
66
+ id: string;
67
+ at: number;
68
+ kind: "reasoning";
69
+ text: string;
70
+ } | {
71
+ id: string;
72
+ at: number;
73
+ kind: "tool";
74
+ call: ToolCallData;
75
+ };
76
+ interface AgentStreamState {
77
+ generation?: string | number;
78
+ entries: AgentTranscriptEntry[];
79
+ lastSeq: number;
80
+ /** The agent is still producing output. */
81
+ alive: boolean;
82
+ error?: string;
83
+ }
84
+ /** Fold stream rows into transcript entries: text of one turn merges, a tool call becomes a row its result completes. */
85
+ declare function foldAgentRows(entries: AgentTranscriptEntry[], rows: readonly AgentStreamRow[]): AgentTranscriptEntry[];
86
+ /**
87
+ * Follow one agent's message stream over Server-Sent Events: `rows`, `reset` and `end` events, reconnecting with
88
+ * `?after=<lastSeq>` when the server closes the connection, so a long turn streams without gaps or repeats.
89
+ */
90
+ declare function useAgentStream(url: string | undefined): AgentStreamState;
91
+ export { ToolCallType as A, TraceEvent as B, TaskListItem as C, ToolCallFeed as D, ToolCallData$1 as E, AgentStreamRow as F, traceSpanMark as G, TraceWorkspaceProps as H, AgentStreamState as I, AgentTranscriptEntry as L, showsTaskPriority as M, taskProgress as N, ToolCallFeedProps as O, taskStatus as P, foldAgentRows as R, TaskList as S, TaskStatus as T, TraceWaterfall as U, TraceWorkspace as V, TraceWaterfallProps as W, RunPhaseList as _, ApprovalPlanStep as a, RunRowStatus as b, FeedSegment as c, InlineToolItem as d, InlineToolItemProps as f, RunPhase as g, RunGroupProps as h, ApprovalDiffSummary as i, parseToolEvent as j, ToolCallStatus as k, InlineThinkingItem$1 as l, RunGroup as m, ApprovalCardProps as n, ExpandedToolDetail as o, LiveDuration as p, ApprovalDiffFile as r, ExpandedToolDetailProps as s, ApprovalCard as t, InlineThinkingItemProps as u, RunRowShell as v, TaskListProps as w, RunRowStatusDot as x, RunRowShellProps as y, useAgentStream as z };
@@ -1,9 +1,9 @@
1
- import { g as ExposedPort } from "./index-AVDzT8Jw.js";
1
+ import { g as ExposedPort } from "./index-DRDtTgb0.js";
2
2
  import { D as RichFileTreeGitStatus, E as RichFileTreeGitEntry } from "./index-BoHOpP2_.js";
3
- import { a as PreviewReadiness, i as PreviewAccess } from "./embedded-app-view-B_vMTtJn.js";
3
+ import "./diff-view-DDHWtR6X.js";
4
+ import { a as PreviewReadiness, i as PreviewAccess } from "./embedded-app-view-Ta5GI4hx.js";
4
5
  import * as React$1 from "react";
5
6
  import { CSSProperties } from "react";
6
- //#region src/workbench/types.d.ts
7
7
  /** Which surface the artifact pane is currently showing. */
8
8
  type ArtifactView = "code" | "diff" | "preview" | "ports" | "terminal";
9
9
  /**
@@ -114,8 +114,6 @@ interface ChangesPaneProps {
114
114
  onOpenFile?: (path: string) => void;
115
115
  className?: string;
116
116
  }
117
- //#endregion
118
- //#region src/workbench/sandbox-artifact-pane.d.ts
119
117
  /**
120
118
  * Blueprint-grade artifact workbench. Composes the sandbox-ui substrate
121
119
  * (`RichFileTree`, `PortsList`, `TerminalView`, `@pierre/diffs`) behind a
@@ -125,8 +123,6 @@ interface ChangesPaneProps {
125
123
  * chrome never shows a dead surface.
126
124
  */
127
125
  declare function SandboxArtifactPane({ artifact, paths, gitStatus, showTree, ports, previewUrl, terminal, activeView, defaultView, onViewChange, onFileSelect, onExposePort, onRemovePort, className, style }: SandboxArtifactPaneProps): React$1.JSX.Element;
128
- //#endregion
129
- //#region src/workbench/changes-pane.d.ts
130
126
  /**
131
127
  * The sandbox's git working tree as a review surface: every changed file with
132
128
  * its line counts, the selected file's word-level diff beneath, and a commit
@@ -141,8 +137,6 @@ declare function SandboxArtifactPane({ artifact, paths, gitStatus, showTree, por
141
137
  * second tall bar.
142
138
  */
143
139
  declare function ChangesPane({ branch, ahead, behind, files, selectedPath, onSelectFile, loading, error, onRefresh, onCommit, onPush, busy, onOpenFile, className }: ChangesPaneProps): React$1.JSX.Element;
144
- //#endregion
145
- //#region src/workbench/pill-tabs.d.ts
146
140
  interface PillTabItem<T extends string> {
147
141
  value: T;
148
142
  label: string;
@@ -166,8 +160,6 @@ interface PillTabsProps<T extends string> {
166
160
  * sandbox-ui surface ladder.
167
161
  */
168
162
  declare function PillTabs<T extends string>({ items, value, onChange, className, "aria-label": ariaLabel, idPrefix, panelId }: PillTabsProps<T>): React$1.JSX.Element;
169
- //#endregion
170
- //#region src/workbench/diff-utils.d.ts
171
163
  interface DiffStats {
172
164
  added: number;
173
165
  removed: number;
@@ -189,8 +181,6 @@ declare function computeDiffStats(original: string, current: string): DiffStats;
189
181
  * yield an empty string so callers can treat "" as "no diff".
190
182
  */
191
183
  declare function buildUnifiedPatch(filename: string, baseline: string, current: string): string;
192
- //#endregion
193
- //#region src/workbench/panel-header.d.ts
194
184
  declare function GitStatusBadge({ status }: {
195
185
  status: RichFileTreeGitStatus;
196
186
  }): React$1.JSX.Element;
@@ -217,8 +207,6 @@ interface PanelHeaderProps {
217
207
  * horizontal rhythm), retoned to the sandbox-ui surface ladder.
218
208
  */
219
209
  declare function PanelHeader({ filename, gitStatus, stats, copyText, children, className }: PanelHeaderProps): React$1.JSX.Element;
220
- //#endregion
221
- //#region src/workbench/file-breadcrumb.d.ts
222
210
  interface FileBreadcrumbProps {
223
211
  /** Canonical path, e.g. `src/lib/retry.ts`. */
224
212
  path: string;
@@ -232,8 +220,6 @@ interface FileBreadcrumbProps {
232
220
  * segments with a file-icon leaf.
233
221
  */
234
222
  declare function FileBreadcrumb({ path, className }: FileBreadcrumbProps): React$1.JSX.Element;
235
- //#endregion
236
- //#region src/workbench/code-view.d.ts
237
223
  interface CodeViewProps {
238
224
  path: string;
239
225
  filename: string;
@@ -245,6 +231,10 @@ interface CodeViewProps {
245
231
  onFileSelect?: (path: string) => void;
246
232
  /** Show the file-tree rail. Off for single-file embeds where the host owns navigation. */
247
233
  showTree?: boolean;
234
+ /** Start with long lines wrapped. */
235
+ defaultWrap?: boolean;
236
+ /** Defaults to the host's Brand theme. */
237
+ themeType?: "light" | "dark";
248
238
  className?: string;
249
239
  }
250
240
  /**
@@ -253,30 +243,7 @@ interface CodeViewProps {
253
243
  * view. The rail owns navigation; selecting a path fans out to `onFileSelect`
254
244
  * so the host can swap the active artifact.
255
245
  */
256
- declare function CodeView({ path, filename, content, language, paths, gitStatus, onFileSelect, showTree, className }: CodeViewProps): React$1.JSX.Element;
257
- //#endregion
258
- //#region src/workbench/diff-view.d.ts
259
- interface DiffViewProps {
260
- filename: string;
261
- baseline: string;
262
- current: string;
263
- /** Hide when the surrounding PanelHeader already identifies the file. */
264
- showFileHeader?: boolean;
265
- /** Start wrapped so narrow review panes never conceal the end of a line. */
266
- defaultWrap?: boolean;
267
- /** Match the host app's selected theme. Defaults to dark for existing consumers. */
268
- themeType?: "light" | "dark";
269
- className?: string;
270
- }
271
- /**
272
- * Keep the maintained renderer for hunking, word diffs and highlighting. A new
273
- * custom element per effect survives StrictMode remounts without hydrating stale
274
- * shadow content. Wrapping is a renderer option, not a CSS patch into its shadow
275
- * root; the plain patch disclosure is the accessible, engine-independent view.
276
- */
277
- declare function DiffView({ filename, baseline, current, showFileHeader, defaultWrap, themeType, className }: DiffViewProps): React$1.JSX.Element;
278
- //#endregion
279
- //#region src/workbench/preview-view.d.ts
246
+ declare function CodeView({ path, filename, content, language, paths, gitStatus, onFileSelect, showTree, defaultWrap, themeType, className }: CodeViewProps): React$1.JSX.Element;
280
247
  interface PreviewViewProps {
281
248
  /** A product-authorized preview URL. Relative navigation stays on its origin. */
282
249
  url: string;
@@ -295,23 +262,29 @@ interface PreviewViewProps {
295
262
  className?: string;
296
263
  }
297
264
  declare function PreviewView({ url, allowedOrigins, access, readiness, onCheckReadiness, onNavigate, variant, title, toolbarActions, className }: PreviewViewProps): React$1.JSX.Element;
298
- //#endregion
299
- //#region src/workbench/syntax.d.ts
300
- /** Resolve a Prism language id from an explicit hint or the filename. */
301
- declare function resolveLanguage(filename: string, explicit?: string): string;
302
- declare const BRAND_PRISM_THEME: Record<string, CSSProperties>;
265
+ /** The one code theme: CodeSurface and DiffView share @pierre/diffs' Shiki highlighter and these themes. */
266
+ declare const CODE_THEME: {
267
+ readonly dark: "github-dark";
268
+ readonly light: "github-light";
269
+ };
303
270
  interface CodeSurfaceProps {
304
271
  code: string;
272
+ /** Names the file and picks its grammar: every Shiki language, loaded on first use. */
305
273
  filename: string;
274
+ /** A Shiki language id that overrides the filename, such as `rust` for a file without an extension. */
306
275
  language?: string;
307
276
  showLineNumbers?: boolean;
277
+ /** Wrap long lines inside the pane instead of scrolling sideways. */
278
+ wrap?: boolean;
279
+ /** A 1-based line to select and scroll into view. */
280
+ line?: number;
281
+ /** Defaults to the host's Brand theme. */
282
+ themeType?: "light" | "dark";
308
283
  className?: string;
309
284
  }
310
285
  /**
311
- * Read-only, brand-themed code renderer. Wrapped in a scroll container so the
312
- * highlighter itself never grows the layout; line numbers sit in a muted,
313
- * tabular column.
286
+ * Read-only code renderer on @pierre/diffs' `File`, the same Shiki highlighter and theme as DiffView. A new
287
+ * custom element per render survives StrictMode remounts; the surrounding element owns scrolling.
314
288
  */
315
- declare function CodeSurface({ code, filename, language, showLineNumbers, className }: CodeSurfaceProps): React$1.JSX.Element;
316
- //#endregion
317
- export { SandboxArtifactTerminal as A, ChangesPane as C, ChangesPaneProps as D, ChangedFile as E, SandboxArtifact as O, PillTabsProps as S, ArtifactView as T, DiffStats as _, PreviewView as a, PillTabItem as b, DiffViewProps as c, FileBreadcrumb as d, FileBreadcrumbProps as f, PanelHeaderProps as g, PanelHeader as h, resolveLanguage as i, SandboxArtifactPaneProps as k, CodeView as l, GitStatusBadge as m, CodeSurface as n, PreviewViewProps as o, DiffStatsBadge as p, CodeSurfaceProps as r, DiffView as s, BRAND_PRISM_THEME as t, CodeViewProps as u, buildUnifiedPatch as v, SandboxArtifactPane as w, PillTabs as x, computeDiffStats as y };
289
+ declare function CodeSurface({ code, filename, language, showLineNumbers, wrap, line, themeType, className }: CodeSurfaceProps): React$1.JSX.Element;
290
+ export { ChangedFile as C, SandboxArtifactTerminal as D, SandboxArtifactPaneProps as E, ArtifactView as S, SandboxArtifact as T, PillTabItem as _, PreviewViewProps as a, ChangesPane as b, FileBreadcrumb as c, GitStatusBadge as d, PanelHeader as f, computeDiffStats as g, buildUnifiedPatch as h, PreviewView as i, FileBreadcrumbProps as l, DiffStats as m, CodeSurface as n, CodeView as o, PanelHeaderProps as p, CodeSurfaceProps as r, CodeViewProps as s, CODE_THEME as t, DiffStatsBadge as u, PillTabs as v, ChangesPaneProps as w, SandboxArtifactPane as x, PillTabsProps as y };
@@ -1,5 +1,4 @@
1
1
  import * as React$1 from "react";
2
- //#region src/connections/agent-messaging-connection.d.ts
3
2
  /** Safe display fields for a host-resolved, authorized private agent target. */
4
3
  interface AgentTargetSummary {
5
4
  agentLabel: string;
@@ -57,5 +56,4 @@ interface AgentMessagingConnectionProps {
57
56
  className?: string;
58
57
  }
59
58
  declare function AgentMessagingConnection({ enrollment, route, onEnroll, onOpenMessages, onRetry, className }: AgentMessagingConnectionProps): React$1.JSX.Element;
60
- //#endregion
61
59
  export { SharedMessagingRouteViewState as a, AgentTargetSummary as i, AgentMessagingConnection as n, AgentMessagingConnectionProps as r, AgentEnrollmentViewState as t };