@tangle-network/agent-app 0.45.47 → 0.45.49

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 (94) hide show
  1. package/dist/{DesignCanvas-P2ZVK6FM.js → DesignCanvas-JRBCAWHW.js} +2 -2
  2. package/dist/{DesignCanvasEditor-DGNCA54P.js → DesignCanvasEditor-J2OLS22G.js} +4 -4
  3. package/dist/{IntakeInterview-3ZIQMZS6.js → IntakeInterview-OKT6DCBN.js} +2 -2
  4. package/dist/InvitationsPanel-OFCYVSAE.js +9 -0
  5. package/dist/InviteAcceptPage-BDOO4JSE.js +7 -0
  6. package/dist/MembersPanel-3ZK2GCMC.js +9 -0
  7. package/dist/{TimelineEditor-OTNPJ3SN.js → TimelineEditor-52YEPDX5.js} +2 -2
  8. package/dist/VaultPane-IGJKB6CX.js +7 -0
  9. package/dist/assistant/index.d.ts +36 -11
  10. package/dist/assistant/index.js +235 -90
  11. package/dist/assistant/index.js.map +1 -1
  12. package/dist/{billing-BibxgALe.d.ts → billing-BuNlaKlE.d.ts} +15 -23
  13. package/dist/chat-react/index.js +2 -1
  14. package/dist/chat-react/index.js.map +1 -1
  15. package/dist/{chunk-TL37E5YY.js → chunk-33BN7P57.js} +6 -6
  16. package/dist/chunk-33BN7P57.js.map +1 -0
  17. package/dist/{chunk-IUSO2XRE.js → chunk-5MI2SKQH.js} +14 -15
  18. package/dist/chunk-5MI2SKQH.js.map +1 -0
  19. package/dist/{chunk-65OZT566.js → chunk-7LJYCHXK.js} +29 -27
  20. package/dist/chunk-7LJYCHXK.js.map +1 -0
  21. package/dist/chunk-AULM4X7U.js +77 -0
  22. package/dist/chunk-AULM4X7U.js.map +1 -0
  23. package/dist/{chunk-GNPN6ED4.js → chunk-CJHIAZKK.js} +128 -166
  24. package/dist/chunk-CJHIAZKK.js.map +1 -0
  25. package/dist/{chunk-54FYYXAX.js → chunk-ENLRJYVW.js} +21 -18
  26. package/dist/chunk-ENLRJYVW.js.map +1 -0
  27. package/dist/{chunk-F4XLTVQ3.js → chunk-GRDLGQ6A.js} +19 -18
  28. package/dist/chunk-GRDLGQ6A.js.map +1 -0
  29. package/dist/{chunk-BT4QFCTB.js → chunk-HSBJB46C.js} +13 -1
  30. package/dist/chunk-HSBJB46C.js.map +1 -0
  31. package/dist/{chunk-VOJB7MVG.js → chunk-I2CA5N7V.js} +70 -28
  32. package/dist/chunk-I2CA5N7V.js.map +1 -0
  33. package/dist/chunk-MLG6XKPV.js +44 -0
  34. package/dist/chunk-MLG6XKPV.js.map +1 -0
  35. package/dist/{chunk-IN6LNZ7O.js → chunk-Q2QKEV6J.js} +7 -7
  36. package/dist/{chunk-IN6LNZ7O.js.map → chunk-Q2QKEV6J.js.map} +1 -1
  37. package/dist/{chunk-B62EZF52.js → chunk-UMV45ZDF.js} +3 -3
  38. package/dist/{chunk-JJJEO4ND.js → chunk-VWTODXRW.js} +2 -2
  39. package/dist/{chunk-JJJEO4ND.js.map → chunk-VWTODXRW.js.map} +1 -1
  40. package/dist/{chunk-VCPZ3HTN.js → chunk-W7P5KV6O.js} +51 -27
  41. package/dist/chunk-W7P5KV6O.js.map +1 -0
  42. package/dist/{chunk-ZX5UT4HF.js → chunk-ZAKKG6WI.js} +354 -273
  43. package/dist/chunk-ZAKKG6WI.js.map +1 -0
  44. package/dist/{chunk-PE67O2LH.js → chunk-ZGY6QB4F.js} +21 -16
  45. package/dist/chunk-ZGY6QB4F.js.map +1 -0
  46. package/dist/design-canvas-react/index.js +18 -16
  47. package/dist/design-canvas-react/index.js.map +1 -1
  48. package/dist/design-canvas-react/lazy.js +1 -1
  49. package/dist/intakes-react/index.js +1 -1
  50. package/dist/intakes-react/lazy.js +1 -1
  51. package/dist/platform/index.d.ts +1 -1
  52. package/dist/platform/index.js +16 -16
  53. package/dist/platform/index.js.map +1 -1
  54. package/dist/sequences-react/index.js +2 -2
  55. package/dist/studio/index.d.ts +13 -1
  56. package/dist/studio/index.js +13 -1
  57. package/dist/studio-react/index.js +115 -78
  58. package/dist/studio-react/index.js.map +1 -1
  59. package/dist/studio-react/studio.css +0 -56
  60. package/dist/teams-react/index.js +4 -3
  61. package/dist/teams-react/lazy.js +3 -3
  62. package/dist/theme/index.js +1 -1
  63. package/dist/theme/tokens.css +15 -13
  64. package/dist/vault/index.js +1 -1
  65. package/dist/vault/lazy.js +1 -1
  66. package/dist/web-react/index.d.ts +16 -12
  67. package/dist/web-react/index.js +6 -4
  68. package/dist/work-product-react/index.js +9 -27
  69. package/dist/work-product-react/index.js.map +1 -1
  70. package/package.json +3 -3
  71. package/dist/InvitationsPanel-F56UOQXA.js +0 -8
  72. package/dist/InviteAcceptPage-P3QJC3C6.js +0 -7
  73. package/dist/MembersPanel-XNLF3SA4.js +0 -8
  74. package/dist/VaultPane-MUWGYVJ7.js +0 -7
  75. package/dist/chunk-54FYYXAX.js.map +0 -1
  76. package/dist/chunk-65OZT566.js.map +0 -1
  77. package/dist/chunk-BT4QFCTB.js.map +0 -1
  78. package/dist/chunk-F4XLTVQ3.js.map +0 -1
  79. package/dist/chunk-GNPN6ED4.js.map +0 -1
  80. package/dist/chunk-IUSO2XRE.js.map +0 -1
  81. package/dist/chunk-PE67O2LH.js.map +0 -1
  82. package/dist/chunk-TL37E5YY.js.map +0 -1
  83. package/dist/chunk-VCPZ3HTN.js.map +0 -1
  84. package/dist/chunk-VOJB7MVG.js.map +0 -1
  85. package/dist/chunk-ZX5UT4HF.js.map +0 -1
  86. /package/dist/{DesignCanvas-P2ZVK6FM.js.map → DesignCanvas-JRBCAWHW.js.map} +0 -0
  87. /package/dist/{DesignCanvasEditor-DGNCA54P.js.map → DesignCanvasEditor-J2OLS22G.js.map} +0 -0
  88. /package/dist/{IntakeInterview-3ZIQMZS6.js.map → IntakeInterview-OKT6DCBN.js.map} +0 -0
  89. /package/dist/{InvitationsPanel-F56UOQXA.js.map → InvitationsPanel-OFCYVSAE.js.map} +0 -0
  90. /package/dist/{InviteAcceptPage-P3QJC3C6.js.map → InviteAcceptPage-BDOO4JSE.js.map} +0 -0
  91. /package/dist/{MembersPanel-XNLF3SA4.js.map → MembersPanel-3ZK2GCMC.js.map} +0 -0
  92. /package/dist/{TimelineEditor-OTNPJ3SN.js.map → TimelineEditor-52YEPDX5.js.map} +0 -0
  93. /package/dist/{VaultPane-MUWGYVJ7.js.map → VaultPane-IGJKB6CX.js.map} +0 -0
  94. /package/dist/{chunk-B62EZF52.js.map → chunk-UMV45ZDF.js.map} +0 -0
@@ -61,62 +61,6 @@
61
61
  }
62
62
  .animate-row-in { animation: studio-row-in 0.25s ease-out both; }
63
63
 
64
- /* ── Studio: inline split shell (composer ⇆ gallery) ──
65
- The composer is the same card in both states. Toggling the parent's
66
- data-library-open grows the gallery in from the right (flex-grow 0→1) and
67
- narrows the composer from centered to a left rail. max-width:1400px caps the
68
- whole cluster on wide screens so extra width becomes neutral gutter. */
69
- .studio-shell {
70
- display: flex;
71
- align-items: flex-start;
72
- justify-content: center;
73
- width: 100%;
74
- max-width: 1400px;
75
- margin: 0 auto;
76
- }
77
- .studio-shell[data-library-open='true'] { gap: 24px; }
78
-
79
- .studio-composer {
80
- flex: none;
81
- width: 620px;
82
- max-width: 100%;
83
- transition: width 0.32s cubic-bezier(0.32, 0.72, 0, 1);
84
- }
85
- .studio-shell[data-library-open='true'] .studio-composer {
86
- width: 50%;
87
- max-width: 560px;
88
- }
89
-
90
- /* max-height:0 while closed hard-clamps the gallery out of layout — the card
91
- grid's own min track width otherwise generates real height and leaks it into
92
- the page scroll even at opacity:0. */
93
- .studio-gallery {
94
- flex-grow: 0;
95
- flex-basis: 0;
96
- min-width: 0;
97
- max-height: 0;
98
- overflow: hidden;
99
- opacity: 0;
100
- transform: translateX(20px);
101
- pointer-events: none;
102
- transition:
103
- flex-grow 0.32s cubic-bezier(0.32, 0.72, 0, 1),
104
- opacity 0.24s ease,
105
- transform 0.32s cubic-bezier(0.32, 0.72, 0, 1);
106
- }
107
- .studio-shell[data-library-open='true'] .studio-gallery {
108
- flex-grow: 1;
109
- max-height: none;
110
- opacity: 1;
111
- transform: none;
112
- pointer-events: auto;
113
- }
114
-
115
- @media (prefers-reduced-motion: reduce) {
116
- .studio-composer,
117
- .studio-gallery { transition: none; }
118
- }
119
-
120
64
  @media (prefers-reduced-motion: reduce) {
121
65
  .studio-sheet-content[data-state='open'],
122
66
  .studio-sheet-content[data-state='closed'],
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  MembersPanel
3
- } from "../chunk-F4XLTVQ3.js";
3
+ } from "../chunk-GRDLGQ6A.js";
4
4
  import {
5
5
  InvitationsPanel
6
- } from "../chunk-IUSO2XRE.js";
6
+ } from "../chunk-5MI2SKQH.js";
7
+ import "../chunk-AULM4X7U.js";
7
8
  import {
8
9
  InviteAcceptPage
9
- } from "../chunk-VCPZ3HTN.js";
10
+ } from "../chunk-W7P5KV6O.js";
10
11
  import "../chunk-6XIAPIW6.js";
11
12
  export {
12
13
  InvitationsPanel,
@@ -1,13 +1,13 @@
1
1
  // src/teams-react/lazy.tsx
2
2
  import { lazy } from "react";
3
3
  var MembersPanelLazy = lazy(
4
- () => import("../MembersPanel-XNLF3SA4.js").then((m) => ({ default: m.MembersPanel }))
4
+ () => import("../MembersPanel-3ZK2GCMC.js").then((m) => ({ default: m.MembersPanel }))
5
5
  );
6
6
  var InvitationsPanelLazy = lazy(
7
- () => import("../InvitationsPanel-F56UOQXA.js").then((m) => ({ default: m.InvitationsPanel }))
7
+ () => import("../InvitationsPanel-OFCYVSAE.js").then((m) => ({ default: m.InvitationsPanel }))
8
8
  );
9
9
  var InviteAcceptPageLazy = lazy(
10
- () => import("../InviteAcceptPage-P3QJC3C6.js").then((m) => ({ default: m.InviteAcceptPage }))
10
+ () => import("../InviteAcceptPage-BDOO4JSE.js").then((m) => ({ default: m.InviteAcceptPage }))
11
11
  );
12
12
  export {
13
13
  InvitationsPanelLazy,
@@ -3,7 +3,7 @@ import {
3
3
  lightTheme,
4
4
  themeColor,
5
5
  themeToCssVars
6
- } from "../chunk-IN6LNZ7O.js";
6
+ } from "../chunk-Q2QKEV6J.js";
7
7
  export {
8
8
  darkTheme,
9
9
  lightTheme,
@@ -61,19 +61,21 @@
61
61
  /* dark band — the dark theme's surface ladder, bottom up: canvas-backdrop,
62
62
  background, input (recessed), card, secondary/muted/accent, popover,
63
63
  border. The first three RETUNE the stops the light theme's ink also reads;
64
- the top four are new rungs. */
64
+ the top four are new rungs. Steps bg→card→secondary→popover measure
65
+ 1.19/1.14/1.09 (card→popover 1.24) — ChatGPT-class steps at brand chroma:
66
+ visible on real displays, not just on the reference monitor. */
65
67
  --neutral-16: oklch(0.16 0.018 280);
66
68
  --neutral-16-hsl: 234.9 28.5% 6.4%;
67
69
  --neutral-19: oklch(0.19 0.018 280);
68
70
  --neutral-19-hsl: 234.5 21.2% 9%;
69
71
  --neutral-22: oklch(0.215 0.018 280);
70
72
  --neutral-22-hsl: 234.2 17.6% 11.3%;
71
- --neutral-24: oklch(0.235 0.018 280);
72
- --neutral-24-hsl: 234.1 15.5% 13.1%;
73
- --neutral-28: oklch(0.285 0.017 280);
74
- --neutral-28-hsl: 233.8 11.4% 17.8%;
75
- --neutral-33: oklch(0.325 0.016 280);
76
- --neutral-33-hsl: 233.6 9.1% 21.7%;
73
+ --neutral-26: oklch(0.26 0.017 280);
74
+ --neutral-26-hsl: 233.8 12.9% 15.4%;
75
+ --neutral-30: oklch(0.3 0.017 280);
76
+ --neutral-30-hsl: 233.7 10.7% 19.3%;
77
+ --neutral-32: oklch(0.32 0.016 280);
78
+ --neutral-32-hsl: 233.6 9.3% 21.2%;
77
79
  --neutral-36: oklch(0.365 0.014 280);
78
80
  --neutral-36-hsl: 233.4 7% 25.6%;
79
81
  /* mid stops — text, both themes */
@@ -376,9 +378,9 @@
376
378
  and is therefore absent, not omitted: the cascade already carries it. */
377
379
  --background: var(--neutral-19-hsl);
378
380
  --foreground: var(--neutral-94-hsl);
379
- --card: var(--neutral-24-hsl);
381
+ --card: var(--neutral-26-hsl);
380
382
  --card-foreground: var(--neutral-94-hsl);
381
- --popover: var(--neutral-33-hsl);
383
+ --popover: var(--neutral-32-hsl);
382
384
  --popover-foreground: var(--neutral-94-hsl);
383
385
  /* 74% L (brand's #818CF8 intent) so primary clears AA as TEXT on a primary/10
384
386
  tint in dark. That lightness is also why the foreground has to INVERT here:
@@ -388,14 +390,14 @@
388
390
  the solid button reads in both themes and the tint keeps its AA as text. */
389
391
  --primary: 239 84% 74%;
390
392
  --primary-foreground: var(--neutral-16-hsl);
391
- --secondary: var(--neutral-28-hsl);
393
+ --secondary: var(--neutral-30-hsl);
392
394
  --secondary-foreground: var(--neutral-94-hsl);
393
- --muted: var(--neutral-28-hsl);
395
+ --muted: var(--neutral-30-hsl);
394
396
  --muted-foreground: var(--neutral-70-hsl);
395
- --accent: var(--neutral-28-hsl);
397
+ --accent: var(--neutral-30-hsl);
396
398
  --accent-foreground: var(--neutral-94-hsl);
397
399
  --destructive: 348 90% 68%;
398
- --destructive-foreground: var(--neutral-24-hsl);
400
+ --destructive-foreground: var(--neutral-22-hsl);
399
401
  /* @see the :root declaration — this is the tier that re-themes. */
400
402
  --warning-strong: 40 94% 56%;
401
403
  --border: var(--neutral-36-hsl);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ConfirmDialog,
3
3
  VaultPane
4
- } from "../chunk-JJJEO4ND.js";
4
+ } from "../chunk-VWTODXRW.js";
5
5
  export {
6
6
  ConfirmDialog,
7
7
  VaultPane
@@ -1,7 +1,7 @@
1
1
  // src/vault/lazy.tsx
2
2
  import { lazy } from "react";
3
3
  var VaultPaneLazy = lazy(
4
- () => import("../VaultPane-MUWGYVJ7.js").then((m) => ({ default: m.VaultPane }))
4
+ () => import("../VaultPane-IGJKB6CX.js").then((m) => ({ default: m.VaultPane }))
5
5
  );
6
6
  export {
7
7
  VaultPaneLazy
@@ -18,7 +18,7 @@ import { F as FlowTrace } from '../flow-types-CJxEmaRy.js';
18
18
  import { a as ReviewQueueItem, c as ReviewQueueState } from '../queue-VTBA5ONX.js';
19
19
  export { p as parseReviewQueueItem } from '../queue-VTBA5ONX.js';
20
20
  export { SandboxTerminalConnection, SandboxTerminalConnectionResponse, UseSandboxTerminalConnectionOptions, UseSandboxTerminalConnectionResult, tabTerminalConnectionId, useSandboxTerminalConnection } from './terminal.js';
21
- import { i as ProductSeatOffer } from '../billing-BibxgALe.js';
21
+ import { i as ProductSeatOffer } from '../billing-BuNlaKlE.js';
22
22
  import { SessionSort, SessionPage, SessionSummary, SessionRailAction } from '../session-shell/index.js';
23
23
  import { AsyncResourceState, AsyncEmptySpec } from './async/index.js';
24
24
  import { CatalogModel } from '../catalog/index.js';
@@ -521,11 +521,14 @@ interface QuestionOptionListProps {
521
521
  selectedValues: string[];
522
522
  disabled: boolean;
523
523
  onToggle: (value: string) => void;
524
+ /** Terminal answered state: the selected rows highlight (primary edge, tint,
525
+ * trailing check) so the card shows WHAT was answered, not just that it was. */
526
+ answered?: boolean;
524
527
  }
525
528
  /** The radio/checkbox option rows for a select field. Renders a fragment of
526
529
  * option `<label>` rows so a card keeps its own wrapping layout and appends
527
530
  * its own write-in input. */
528
- declare function QuestionOptionList({ groupName, idPrefix, options, multi, selectedValues, disabled, onToggle, }: QuestionOptionListProps): react.JSX.Element;
531
+ declare function QuestionOptionList({ groupName, idPrefix, options, multi, selectedValues, disabled, onToggle, answered, }: QuestionOptionListProps): react.JSX.Element;
529
532
  interface InteractionQuestionCardProps {
530
533
  interaction: ChatInteraction;
531
534
  /** Viewer-vs-editor gate: false renders everything read-only. */
@@ -542,11 +545,6 @@ interface InteractionQuestionCardProps {
542
545
  onLateAnswer?: (message: string) => boolean | void | Promise<boolean | void>;
543
546
  /** Overrides the kind badge ("Question"). */
544
547
  kindLabel?: string;
545
- /** Overrides the header note ("The agent asked for input"). Set it whenever an
546
- * agent is not the one asking — a host that parks on a human at the graph
547
- * level is not an agent's mid-run question, and a card that claims otherwise
548
- * misreports why the work stopped. */
549
- sourceNote?: string;
550
548
  /** What happens if nobody answers, rendered beside the submit action.
551
549
  *
552
550
  * The caller owns both the clock and the copy: this card holds no timer, so a
@@ -570,7 +568,7 @@ interface InteractionQuestionCardProps {
570
568
  renderMarkdown?: (markdown: string) => ReactNode;
571
569
  className?: string;
572
570
  }
573
- declare function InteractionQuestionCard({ interaction, canWrite, submitAnswer, onResolved, onLateAnswer, kindLabel, sourceNote, timeoutNote, renderMarkdown, className, }: InteractionQuestionCardProps): react.JSX.Element;
571
+ declare function InteractionQuestionCard({ interaction, canWrite, submitAnswer, onResolved, onLateAnswer, kindLabel, timeoutNote, renderMarkdown, className, }: InteractionQuestionCardProps): react.JSX.Element;
574
572
 
575
573
  interface InteractionPlanCardProps {
576
574
  interaction: ChatInteraction;
@@ -1425,7 +1423,7 @@ interface SeatPaywallProps {
1425
1423
  offer?: ProductSeatOffer;
1426
1424
  /** Optional one-line value prop under the headline. */
1427
1425
  tagline?: string;
1428
- /** CTA label. Default "Unlock {product}". */
1426
+ /** CTA label. Default "Continue to checkout". */
1429
1427
  ctaLabel?: string;
1430
1428
  /** Value-prop bullets. Default = product/usage-derived only; pass your own to
1431
1429
  * supply product-specific value props (the shell bakes no GTM copy). */
@@ -1436,7 +1434,10 @@ interface SeatPaywallProps {
1436
1434
  /**
1437
1435
  * Centered card paywall. The price line reads
1438
1436
  * "$100/mo · includes $50/mo of AI usage" so the included allowance anchors the
1439
- * value without ever exposing the ratio.
1437
+ * value without ever exposing the ratio — and says it ONCE: the default
1438
+ * benefits don't restate the usage line the subline already carries, and the
1439
+ * CTA is the next step ("Continue to checkout"), not a third repeat of the
1440
+ * eyebrow + headline's "Unlock {product}".
1440
1441
  */
1441
1442
  declare function SeatPaywall({ product, onCheckout, priceUsd, includedUsageUsd, offer, tagline, ctaLabel, benefits, footnote, }: SeatPaywallProps): ReactNode;
1442
1443
 
@@ -2034,8 +2035,9 @@ interface ChatUiMessage extends ChatMessageMetrics {
2034
2035
  /** Define properties for rendering chat messages with optional models, markdown, extras, and durable cards */
2035
2036
  interface ChatMessagesProps {
2036
2037
  messages: ChatUiMessage[];
2037
- /** Shared reading scale for both user and assistant prose. Defaults to 16px;
2038
- * `large` uses 17px without enlarging labels, tool chrome, or metadata. */
2038
+ /** Shared reading scale for both user and assistant prose. Defaults to 16px
2039
+ * at a 1.6 line height; `large` uses 17px at the same leading without
2040
+ * enlarging labels, tool chrome, or metadata. */
2039
2041
  messageSize?: 'default' | 'large';
2040
2042
  /** Transcript chrome. `labeled` (default) keeps the always-on role label +
2041
2043
  * model/tok-s/cost meta line and the primary-tinted user bubble. `quiet`
@@ -2104,6 +2106,8 @@ interface ChatEmptyDoor {
2104
2106
  label: string;
2105
2107
  description?: string;
2106
2108
  onSelect: () => void;
2109
+ /** Optional glyph rendered left of the label. */
2110
+ icon?: ReactNode;
2107
2111
  }
2108
2112
  /** Define properties for rendering the chat empty state with customizable text and starting doors */
2109
2113
  interface ChatEmptyStateProps {
@@ -111,7 +111,7 @@ import {
111
111
  withoutRecordGridCreated,
112
112
  withoutRecordGridRemoved,
113
113
  withoutRecordGridUpdate
114
- } from "../chunk-ZX5UT4HF.js";
114
+ } from "../chunk-ZAKKG6WI.js";
115
115
  import "../chunk-FBVLEGEG.js";
116
116
  import {
117
117
  EvidenceLineageTable,
@@ -124,7 +124,7 @@ import {
124
124
  reviewQueueStateLabel,
125
125
  workProductPartsFromMessageParts,
126
126
  workProductStatusLabel
127
- } from "../chunk-54FYYXAX.js";
127
+ } from "../chunk-ENLRJYVW.js";
128
128
  import {
129
129
  parseReviewQueueItem
130
130
  } from "../chunk-GEYACSFW.js";
@@ -139,7 +139,6 @@ import {
139
139
  OVERLAY_SHADOW,
140
140
  POPOVER_SURFACE_ATTR,
141
141
  PopoverSurface,
142
- ProviderLogo,
143
142
  effortLevelLabel,
144
143
  effortLevelsFromIds,
145
144
  effortMeterFill,
@@ -147,7 +146,10 @@ import {
147
146
  useComposerAttachments,
148
147
  usePending,
149
148
  usePopover
150
- } from "../chunk-GNPN6ED4.js";
149
+ } from "../chunk-CJHIAZKK.js";
150
+ import {
151
+ ProviderLogo
152
+ } from "../chunk-MLG6XKPV.js";
151
153
  import {
152
154
  tabTerminalConnectionId,
153
155
  useSandboxTerminalConnection
@@ -4,7 +4,7 @@ import {
4
4
  ProvenanceStamp,
5
5
  QualityCheckList,
6
6
  workProductStatusLabel
7
- } from "../chunk-54FYYXAX.js";
7
+ } from "../chunk-ENLRJYVW.js";
8
8
  import "../chunk-GEYACSFW.js";
9
9
  import {
10
10
  unresolvedBlockingExceptions
@@ -16,8 +16,7 @@ import {
16
16
  CodeSurface,
17
17
  DiffView,
18
18
  FileBreadcrumb,
19
- PillTabs,
20
- computeDiffStats
19
+ PillTabs
21
20
  } from "@tangle-network/sandbox-ui/workbench";
22
21
  import { jsx, jsxs } from "react/jsx-runtime";
23
22
  function filenameOf(path, fallback) {
@@ -55,10 +54,6 @@ function WorkProductPane({
55
54
  const [compare, setCompare] = useState(null);
56
55
  const [compareError, setCompareError] = useState(null);
57
56
  const diffFilename = filenameOf(artifact?.path, artifact?.title ?? workProduct.scopeKey);
58
- const diffStats = useMemo(
59
- () => hasDiff ? computeDiffStats(baseline ?? "", body) : null,
60
- [hasDiff, baseline, body]
61
- );
62
57
  const loadCompare = useCallback(
63
58
  async (from, to) => {
64
59
  if (!loadVersionBody || !from.artifactPath || !to.artifactPath) return;
@@ -84,12 +79,12 @@ function WorkProductPane({
84
79
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
85
80
  /* @__PURE__ */ jsxs("p", { className: "truncate text-sm font-semibold text-foreground", children: [
86
81
  artifact?.title ?? workProduct.scopeKey,
87
- /* @__PURE__ */ jsxs("span", { className: "ml-1.5 text-[11px] font-normal text-muted-foreground", children: [
82
+ /* @__PURE__ */ jsxs("span", { className: "ml-1.5 text-xs font-normal text-muted-foreground", children: [
88
83
  "v",
89
84
  workProduct.version
90
85
  ] })
91
86
  ] }),
92
- /* @__PURE__ */ jsxs("p", { className: "text-[11px] text-muted-foreground", children: [
87
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
93
88
  artifact?.kind && /* @__PURE__ */ jsxs("span", { className: "font-mono", children: [
94
89
  artifact.kind,
95
90
  " \xB7 "
@@ -109,20 +104,7 @@ function WorkProductPane({
109
104
  artifact?.path && /* @__PURE__ */ jsx(FileBreadcrumb, { path: artifact.path, className: "border-b border-border px-3 py-2" }),
110
105
  body ? /* @__PURE__ */ jsx(CodeSurface, { code: body, filename: diffFilename }) : artifact?.fields ? /* @__PURE__ */ jsx(CodeSurface, { code: JSON.stringify(artifact.fields, null, 2), filename: `${diffFilename}.json`, language: "json" }) : /* @__PURE__ */ jsx("p", { className: "px-4 py-6 text-center text-xs text-muted-foreground", children: "No artifact body yet." })
111
106
  ] }),
112
- tab === "diff" && hasDiff && /* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 overflow-auto rounded-lg border border-border", children: [
113
- diffStats && /* @__PURE__ */ jsxs("p", { className: "border-b border-border px-3 py-2 text-[11px] text-muted-foreground", children: [
114
- /* @__PURE__ */ jsxs("span", { className: "text-success", children: [
115
- "+",
116
- diffStats.added
117
- ] }),
118
- " ",
119
- /* @__PURE__ */ jsxs("span", { className: "text-destructive", children: [
120
- "\u2212",
121
- diffStats.removed
122
- ] })
123
- ] }),
124
- /* @__PURE__ */ jsx(DiffView, { filename: diffFilename, baseline: baseline ?? "", current: body })
125
- ] }),
107
+ tab === "diff" && hasDiff && /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto rounded-lg border border-border", children: /* @__PURE__ */ jsx(DiffView, { filename: diffFilename, baseline: baseline ?? "", current: body }) }),
126
108
  tab === "lineage" && /* @__PURE__ */ jsx(EvidenceLineageTable, { evidence: workProduct.evidence, resolveSourceUrl }),
127
109
  tab === "exceptions" && /* @__PURE__ */ jsx(ExceptionList, { exceptions: workProduct.exceptions }),
128
110
  tab === "checks" && /* @__PURE__ */ jsx(QualityCheckList, { checks: workProduct.checks }),
@@ -136,8 +118,8 @@ function WorkProductPane({
136
118
  "v",
137
119
  entry.version
138
120
  ] }),
139
- /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: workProductStatusLabel(entry.status) }),
140
- entry.reviewedBy && /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-muted-foreground", children: [
121
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: workProductStatusLabel(entry.status) }),
122
+ entry.reviewedBy && /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground", children: [
141
123
  "by ",
142
124
  entry.reviewedBy
143
125
  ] }),
@@ -147,7 +129,7 @@ function WorkProductPane({
147
129
  {
148
130
  type: "button",
149
131
  onClick: () => void loadCompare(prior, entry),
150
- className: "rounded-md border border-border px-2 py-0.5 text-[11px] font-medium text-foreground transition hover:bg-accent",
132
+ className: "rounded-md border border-border px-2 py-0.5 text-xs font-medium text-foreground transition hover:bg-accent",
151
133
  children: [
152
134
  "Compare v",
153
135
  prior.version,
@@ -163,7 +145,7 @@ function WorkProductPane({
163
145
  }),
164
146
  compareError && /* @__PURE__ */ jsx("p", { className: "rounded-md bg-destructive/10 px-3 py-2 text-xs text-destructive", children: compareError }),
165
147
  compare && /* @__PURE__ */ jsxs("div", { className: "overflow-auto rounded-lg border border-border", children: [
166
- /* @__PURE__ */ jsxs("p", { className: "border-b border-border px-3 py-2 text-[11px] text-muted-foreground", children: [
148
+ /* @__PURE__ */ jsxs("p", { className: "border-b border-border px-3 py-2 text-xs text-muted-foreground", children: [
167
149
  "v",
168
150
  compare.fromVersion,
169
151
  " \u2192 v",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/work-product-react/index.tsx"],"sourcesContent":["/**\n * `./work-product-react` — the sandbox-ui-composed review pane. It follows the\n * optional-peer rule: this is the ONLY work-product surface\n * that imports `@tangle-network/sandbox-ui` (its `workbench` primitives:\n * `PillTabs`, `CodeSurface`, `DiffView`, `FileBreadcrumb`,\n * `computeDiffStats`). `/web-react`'s queue/card/lineage components stay\n * sandbox-ui-free; importing THIS subpath requires the otherwise optional\n * sandbox-ui peer.\n *\n * The pane never fetches: bodies arrive as resolved strings\n * (`currentContent`/`baselineContent`) and history compares load through the\n * injected `loadVersionBody(ref)` seam. The default tab is a PROP — tax\n * passes `'lineage'` (lineage before diff for tax), legal passes `'diff'`\n * (the redline IS the artifact), gtm passes `'artifact'`.\n */\n\nimport { useCallback, useMemo, useState } from 'react'\nimport {\n CodeSurface,\n DiffView,\n FileBreadcrumb,\n PillTabs,\n computeDiffStats,\n type PillTabItem,\n} from '@tangle-network/sandbox-ui/workbench'\n\nimport {\n EvidenceLineageTable,\n ExceptionList,\n ProvenanceStamp,\n QualityCheckList,\n workProductStatusLabel,\n} from '../web-react/work-product'\nimport type {\n EvidenceEntry,\n ProfileBacktestSummary,\n WorkProductRecord,\n WorkProductVersionEntry,\n} from '../work-product/types'\nimport { unresolvedBlockingExceptions } from '../work-product/types'\n\nexport type WorkProductPaneTab = 'artifact' | 'diff' | 'lineage' | 'exceptions' | 'checks' | 'history'\n\n/** Properties for the tabbed work-product review pane */\nexport interface WorkProductPaneProps {\n workProduct: WorkProductRecord\n /** Which tab opens first — a product choice, not a heuristic: tax passes\n * 'lineage', legal 'diff', gtm 'artifact'. Default 'artifact'. */\n defaultTab?: WorkProductPaneTab\n /** Resolved artifact body when it lives at `artifact.path` rather than\n * inline. Falls back to `artifact.content`. */\n currentContent?: string\n /** Resolved baseline body for diff-first products. Falls back to\n * `artifact.baseline.content`. */\n baselineContent?: string\n /** Load a frozen version body by its `history[].artifactPath` ref for the\n * vN-1 → vN compare. Omit to hide history compares. */\n loadVersionBody?: (ref: string) => Promise<string | null>\n /** Resolve one evidence entry's source to an openable URL (lineage\n * click-through). */\n resolveSourceUrl?: (entry: EvidenceEntry) => string\n /** Backtest summary for the record's profile hash, rendered on the\n * provenance stamp. */\n backtest?: ProfileBacktestSummary\n className?: string\n}\n\ninterface VersionCompare {\n fromVersion: number\n toVersion: number\n baseline: string\n current: string\n}\n\n/** Trailing path segment for a diff header. */\nfunction filenameOf(path: string | undefined, fallback: string): string {\n if (!path) return fallback\n const segments = path.split('/')\n return segments[segments.length - 1] || fallback\n}\n\n/**\n * The tabbed review pane over one work product: Artifact | Diff | Lineage |\n * Exceptions | Checks | History. Diff renders baseline→current for redline\n * artifacts and vN-1→vN for history compares; lineage is the\n * every-value-traceable table; provenance is stamped across the header.\n */\nexport function WorkProductPane({\n workProduct,\n defaultTab = 'artifact',\n currentContent,\n baselineContent,\n loadVersionBody,\n resolveSourceUrl,\n backtest,\n className,\n}: WorkProductPaneProps) {\n const artifact = workProduct.artifact\n const body = currentContent ?? artifact?.content ?? ''\n const baseline = baselineContent ?? artifact?.baseline?.content\n const hasDiff = baseline !== undefined\n\n const tabs = useMemo(() => {\n const items: PillTabItem<WorkProductPaneTab>[] = [{ value: 'artifact', label: 'Artifact' }]\n if (hasDiff) items.push({ value: 'diff', label: 'Diff' })\n items.push(\n { value: 'lineage', label: `Lineage (${workProduct.evidence.length})` },\n { value: 'exceptions', label: `Exceptions (${workProduct.exceptions.length})` },\n { value: 'checks', label: `Checks (${workProduct.checks.length})` },\n { value: 'history', label: `History (${workProduct.history.length})` },\n )\n return items\n }, [hasDiff, workProduct.evidence.length, workProduct.exceptions.length, workProduct.checks.length, workProduct.history.length])\n\n const initialTab = tabs.some((tab) => tab.value === defaultTab) ? defaultTab : 'artifact'\n const [tab, setTab] = useState<WorkProductPaneTab>(initialTab)\n const [compare, setCompare] = useState<VersionCompare | null>(null)\n const [compareError, setCompareError] = useState<string | null>(null)\n\n const diffFilename = filenameOf(artifact?.path, artifact?.title ?? workProduct.scopeKey)\n const diffStats = useMemo(\n () => (hasDiff ? computeDiffStats(baseline ?? '', body) : null),\n [hasDiff, baseline, body],\n )\n\n const loadCompare = useCallback(\n async (from: WorkProductVersionEntry, to: WorkProductVersionEntry) => {\n if (!loadVersionBody || !from.artifactPath || !to.artifactPath) return\n setCompareError(null)\n try {\n const [fromBody, toBody] = await Promise.all([\n loadVersionBody(from.artifactPath),\n loadVersionBody(to.artifactPath),\n ])\n if (fromBody === null || toBody === null) {\n setCompareError('A version snapshot could not be loaded.')\n return\n }\n setCompare({ fromVersion: from.version, toVersion: to.version, baseline: fromBody, current: toBody })\n } catch (error) {\n setCompareError(error instanceof Error ? error.message : String(error))\n }\n },\n [loadVersionBody],\n )\n\n return (\n <div className={`flex min-h-0 flex-col gap-3 ${className ?? ''}`}>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-semibold text-foreground\">\n {artifact?.title ?? workProduct.scopeKey}\n <span className=\"ml-1.5 text-[11px] font-normal text-muted-foreground\">v{workProduct.version}</span>\n </p>\n <p className=\"text-[11px] text-muted-foreground\">\n {artifact?.kind && <span className=\"font-mono\">{artifact.kind} · </span>}\n {workProductStatusLabel(workProduct.status)}\n {unresolvedBlockingExceptions(workProduct.exceptions).length > 0 && (\n <span className=\"text-destructive\"> · {unresolvedBlockingExceptions(workProduct.exceptions).length} blocking</span>\n )}\n </p>\n </div>\n <ProvenanceStamp provenance={workProduct.provenance} backtest={backtest} />\n </div>\n\n <PillTabs items={tabs} value={tab} onChange={setTab} aria-label=\"Work product views\" />\n\n {tab === 'artifact' && (\n <div className=\"min-h-0 flex-1 overflow-auto rounded-lg border border-border\">\n {artifact?.path && <FileBreadcrumb path={artifact.path} className=\"border-b border-border px-3 py-2\" />}\n {body ? (\n <CodeSurface code={body} filename={diffFilename} />\n ) : artifact?.fields ? (\n <CodeSurface code={JSON.stringify(artifact.fields, null, 2)} filename={`${diffFilename}.json`} language=\"json\" />\n ) : (\n <p className=\"px-4 py-6 text-center text-xs text-muted-foreground\">No artifact body yet.</p>\n )}\n </div>\n )}\n\n {tab === 'diff' && hasDiff && (\n <div className=\"min-h-0 flex-1 overflow-auto rounded-lg border border-border\">\n {diffStats && (\n <p className=\"border-b border-border px-3 py-2 text-[11px] text-muted-foreground\">\n <span className=\"text-success\">+{diffStats.added}</span>{' '}\n <span className=\"text-destructive\">−{diffStats.removed}</span>\n </p>\n )}\n <DiffView filename={diffFilename} baseline={baseline ?? ''} current={body} />\n </div>\n )}\n\n {tab === 'lineage' && (\n <EvidenceLineageTable evidence={workProduct.evidence} resolveSourceUrl={resolveSourceUrl} />\n )}\n\n {tab === 'exceptions' && <ExceptionList exceptions={workProduct.exceptions} />}\n\n {tab === 'checks' && <QualityCheckList checks={workProduct.checks} />}\n\n {tab === 'history' && (\n <div className=\"space-y-2\">\n {workProduct.history.length === 0 && <p className=\"text-xs text-muted-foreground\">No versions yet.</p>}\n {workProduct.history.map((entry, index) => {\n const prior = workProduct.history\n .slice(0, index)\n .reverse()\n .find((candidate) => candidate.version < entry.version && candidate.artifactPath)\n return (\n <div key={`${entry.version}:${entry.status}:${entry.at}`} className=\"rounded-lg border border-border bg-card px-3 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">v{entry.version}</span>\n <span className=\"text-[11px] text-muted-foreground\">{workProductStatusLabel(entry.status)}</span>\n {entry.reviewedBy && <span className=\"text-[11px] text-muted-foreground\">by {entry.reviewedBy}</span>}\n <span className=\"flex-1\" />\n {loadVersionBody && prior?.artifactPath && entry.artifactPath && (\n <button\n type=\"button\"\n onClick={() => void loadCompare(prior, entry)}\n className=\"rounded-md border border-border px-2 py-0.5 text-[11px] font-medium text-foreground transition hover:bg-accent\"\n >\n Compare v{prior.version} → v{entry.version}\n </button>\n )}\n </div>\n {entry.reviewNote && <p className=\"mt-1 text-sm leading-snug text-foreground\">{entry.reviewNote}</p>}\n <ProvenanceStamp provenance={entry.provenance} className=\"mt-1\" />\n </div>\n )\n })}\n {compareError && <p className=\"rounded-md bg-destructive/10 px-3 py-2 text-xs text-destructive\">{compareError}</p>}\n {compare && (\n <div className=\"overflow-auto rounded-lg border border-border\">\n <p className=\"border-b border-border px-3 py-2 text-[11px] text-muted-foreground\">\n v{compare.fromVersion} → v{compare.toVersion}\n </p>\n <DiffView filename={diffFilename} baseline={compare.baseline} current={compare.current} />\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","names":["tab"]}
1
+ {"version":3,"sources":["../../src/work-product-react/index.tsx"],"sourcesContent":["/**\n * `./work-product-react` — the sandbox-ui-composed review pane. It follows the\n * optional-peer rule: this is the ONLY work-product surface\n * that imports `@tangle-network/sandbox-ui` (its `workbench` primitives:\n * `PillTabs`, `CodeSurface`, `DiffView`, `FileBreadcrumb`).\n * `/web-react`'s queue/card/lineage components stay\n * sandbox-ui-free; importing THIS subpath requires the otherwise optional\n * sandbox-ui peer.\n *\n * The pane never fetches: bodies arrive as resolved strings\n * (`currentContent`/`baselineContent`) and history compares load through the\n * injected `loadVersionBody(ref)` seam. The default tab is a PROP — tax\n * passes `'lineage'` (lineage before diff for tax), legal passes `'diff'`\n * (the redline IS the artifact), gtm passes `'artifact'`.\n */\n\nimport { useCallback, useMemo, useState } from 'react'\nimport {\n CodeSurface,\n DiffView,\n FileBreadcrumb,\n PillTabs,\n type PillTabItem,\n} from '@tangle-network/sandbox-ui/workbench'\n\nimport {\n EvidenceLineageTable,\n ExceptionList,\n ProvenanceStamp,\n QualityCheckList,\n workProductStatusLabel,\n} from '../web-react/work-product'\nimport type {\n EvidenceEntry,\n ProfileBacktestSummary,\n WorkProductRecord,\n WorkProductVersionEntry,\n} from '../work-product/types'\nimport { unresolvedBlockingExceptions } from '../work-product/types'\n\nexport type WorkProductPaneTab = 'artifact' | 'diff' | 'lineage' | 'exceptions' | 'checks' | 'history'\n\n/** Properties for the tabbed work-product review pane */\nexport interface WorkProductPaneProps {\n workProduct: WorkProductRecord\n /** Which tab opens first — a product choice, not a heuristic: tax passes\n * 'lineage', legal 'diff', gtm 'artifact'. Default 'artifact'. */\n defaultTab?: WorkProductPaneTab\n /** Resolved artifact body when it lives at `artifact.path` rather than\n * inline. Falls back to `artifact.content`. */\n currentContent?: string\n /** Resolved baseline body for diff-first products. Falls back to\n * `artifact.baseline.content`. */\n baselineContent?: string\n /** Load a frozen version body by its `history[].artifactPath` ref for the\n * vN-1 → vN compare. Omit to hide history compares. */\n loadVersionBody?: (ref: string) => Promise<string | null>\n /** Resolve one evidence entry's source to an openable URL (lineage\n * click-through). */\n resolveSourceUrl?: (entry: EvidenceEntry) => string\n /** Backtest summary for the record's profile hash, rendered on the\n * provenance stamp. */\n backtest?: ProfileBacktestSummary\n className?: string\n}\n\ninterface VersionCompare {\n fromVersion: number\n toVersion: number\n baseline: string\n current: string\n}\n\n/** Trailing path segment for a diff header. */\nfunction filenameOf(path: string | undefined, fallback: string): string {\n if (!path) return fallback\n const segments = path.split('/')\n return segments[segments.length - 1] || fallback\n}\n\n/**\n * The tabbed review pane over one work product: Artifact | Diff | Lineage |\n * Exceptions | Checks | History. Diff renders baseline→current for redline\n * artifacts and vN-1→vN for history compares; lineage is the\n * every-value-traceable table; provenance is stamped across the header.\n */\nexport function WorkProductPane({\n workProduct,\n defaultTab = 'artifact',\n currentContent,\n baselineContent,\n loadVersionBody,\n resolveSourceUrl,\n backtest,\n className,\n}: WorkProductPaneProps) {\n const artifact = workProduct.artifact\n const body = currentContent ?? artifact?.content ?? ''\n const baseline = baselineContent ?? artifact?.baseline?.content\n const hasDiff = baseline !== undefined\n\n const tabs = useMemo(() => {\n const items: PillTabItem<WorkProductPaneTab>[] = [{ value: 'artifact', label: 'Artifact' }]\n if (hasDiff) items.push({ value: 'diff', label: 'Diff' })\n items.push(\n { value: 'lineage', label: `Lineage (${workProduct.evidence.length})` },\n { value: 'exceptions', label: `Exceptions (${workProduct.exceptions.length})` },\n { value: 'checks', label: `Checks (${workProduct.checks.length})` },\n { value: 'history', label: `History (${workProduct.history.length})` },\n )\n return items\n }, [hasDiff, workProduct.evidence.length, workProduct.exceptions.length, workProduct.checks.length, workProduct.history.length])\n\n const initialTab = tabs.some((tab) => tab.value === defaultTab) ? defaultTab : 'artifact'\n const [tab, setTab] = useState<WorkProductPaneTab>(initialTab)\n const [compare, setCompare] = useState<VersionCompare | null>(null)\n const [compareError, setCompareError] = useState<string | null>(null)\n\n const diffFilename = filenameOf(artifact?.path, artifact?.title ?? workProduct.scopeKey)\n\n const loadCompare = useCallback(\n async (from: WorkProductVersionEntry, to: WorkProductVersionEntry) => {\n if (!loadVersionBody || !from.artifactPath || !to.artifactPath) return\n setCompareError(null)\n try {\n const [fromBody, toBody] = await Promise.all([\n loadVersionBody(from.artifactPath),\n loadVersionBody(to.artifactPath),\n ])\n if (fromBody === null || toBody === null) {\n setCompareError('A version snapshot could not be loaded.')\n return\n }\n setCompare({ fromVersion: from.version, toVersion: to.version, baseline: fromBody, current: toBody })\n } catch (error) {\n setCompareError(error instanceof Error ? error.message : String(error))\n }\n },\n [loadVersionBody],\n )\n\n return (\n <div className={`flex min-h-0 flex-col gap-3 ${className ?? ''}`}>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-semibold text-foreground\">\n {artifact?.title ?? workProduct.scopeKey}\n <span className=\"ml-1.5 text-xs font-normal text-muted-foreground\">v{workProduct.version}</span>\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {artifact?.kind && <span className=\"font-mono\">{artifact.kind} · </span>}\n {workProductStatusLabel(workProduct.status)}\n {unresolvedBlockingExceptions(workProduct.exceptions).length > 0 && (\n <span className=\"text-destructive\"> · {unresolvedBlockingExceptions(workProduct.exceptions).length} blocking</span>\n )}\n </p>\n </div>\n <ProvenanceStamp provenance={workProduct.provenance} backtest={backtest} />\n </div>\n\n <PillTabs items={tabs} value={tab} onChange={setTab} aria-label=\"Work product views\" />\n\n {tab === 'artifact' && (\n <div className=\"min-h-0 flex-1 overflow-auto rounded-lg border border-border\">\n {artifact?.path && <FileBreadcrumb path={artifact.path} className=\"border-b border-border px-3 py-2\" />}\n {body ? (\n <CodeSurface code={body} filename={diffFilename} />\n ) : artifact?.fields ? (\n <CodeSurface code={JSON.stringify(artifact.fields, null, 2)} filename={`${diffFilename}.json`} language=\"json\" />\n ) : (\n <p className=\"px-4 py-6 text-center text-xs text-muted-foreground\">No artifact body yet.</p>\n )}\n </div>\n )}\n\n {tab === 'diff' && hasDiff && (\n <div className=\"min-h-0 flex-1 overflow-auto rounded-lg border border-border\">\n {/* DiffView's own file header already carries the +/− counts. */}\n <DiffView filename={diffFilename} baseline={baseline ?? ''} current={body} />\n </div>\n )}\n\n {tab === 'lineage' && (\n <EvidenceLineageTable evidence={workProduct.evidence} resolveSourceUrl={resolveSourceUrl} />\n )}\n\n {tab === 'exceptions' && <ExceptionList exceptions={workProduct.exceptions} />}\n\n {tab === 'checks' && <QualityCheckList checks={workProduct.checks} />}\n\n {tab === 'history' && (\n <div className=\"space-y-2\">\n {workProduct.history.length === 0 && <p className=\"text-xs text-muted-foreground\">No versions yet.</p>}\n {workProduct.history.map((entry, index) => {\n const prior = workProduct.history\n .slice(0, index)\n .reverse()\n .find((candidate) => candidate.version < entry.version && candidate.artifactPath)\n return (\n <div key={`${entry.version}:${entry.status}:${entry.at}`} className=\"rounded-lg border border-border bg-card px-3 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">v{entry.version}</span>\n <span className=\"text-xs text-muted-foreground\">{workProductStatusLabel(entry.status)}</span>\n {entry.reviewedBy && <span className=\"text-xs text-muted-foreground\">by {entry.reviewedBy}</span>}\n <span className=\"flex-1\" />\n {loadVersionBody && prior?.artifactPath && entry.artifactPath && (\n <button\n type=\"button\"\n onClick={() => void loadCompare(prior, entry)}\n className=\"rounded-md border border-border px-2 py-0.5 text-xs font-medium text-foreground transition hover:bg-accent\"\n >\n Compare v{prior.version} → v{entry.version}\n </button>\n )}\n </div>\n {entry.reviewNote && <p className=\"mt-1 text-sm leading-snug text-foreground\">{entry.reviewNote}</p>}\n <ProvenanceStamp provenance={entry.provenance} className=\"mt-1\" />\n </div>\n )\n })}\n {compareError && <p className=\"rounded-md bg-destructive/10 px-3 py-2 text-xs text-destructive\">{compareError}</p>}\n {compare && (\n <div className=\"overflow-auto rounded-lg border border-border\">\n <p className=\"border-b border-border px-3 py-2 text-xs text-muted-foreground\">\n v{compare.fromVersion} → v{compare.toVersion}\n </p>\n <DiffView filename={diffFilename} baseline={compare.baseline} current={compare.current} />\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","names":["tab"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-app",
3
- "version": "0.45.47",
3
+ "version": "0.45.49",
4
4
  "packageManager": "pnpm@11.17.0",
5
5
  "description": "Build agent applications with typed chat, tools, sandboxes, integrations, billing, and evaluation.",
6
6
  "keywords": [
@@ -526,7 +526,7 @@
526
526
  "@tangle-network/agent-runtime": "0.126.0",
527
527
  "@tangle-network/brand": "1.3.0",
528
528
  "@tangle-network/sandbox": "0.17.2",
529
- "@tangle-network/sandbox-ui": "0.94.2",
529
+ "@tangle-network/sandbox-ui": "0.99.2",
530
530
  "@tangle-network/ui": "^11.2.2",
531
531
  "@testing-library/dom": "^10.4.1",
532
532
  "@testing-library/react": "^16.3.2",
@@ -578,7 +578,7 @@
578
578
  "@tangle-network/agent-runtime": ">=0.126.0",
579
579
  "@tangle-network/brand": ">=1.1.0",
580
580
  "@tangle-network/sandbox": ">=0.15.2",
581
- "@tangle-network/sandbox-ui": ">=0.91.5",
581
+ "@tangle-network/sandbox-ui": ">=0.99.2",
582
582
  "@tangle-network/ui": ">=11.2.2",
583
583
  "@xyflow/react": ">=12.0.0",
584
584
  "better-auth": ">=1.6.16",
@@ -1,8 +0,0 @@
1
- import {
2
- InvitationsPanel
3
- } from "./chunk-IUSO2XRE.js";
4
- import "./chunk-6XIAPIW6.js";
5
- export {
6
- InvitationsPanel
7
- };
8
- //# sourceMappingURL=InvitationsPanel-F56UOQXA.js.map
@@ -1,7 +0,0 @@
1
- import {
2
- InviteAcceptPage
3
- } from "./chunk-VCPZ3HTN.js";
4
- export {
5
- InviteAcceptPage
6
- };
7
- //# sourceMappingURL=InviteAcceptPage-P3QJC3C6.js.map
@@ -1,8 +0,0 @@
1
- import {
2
- MembersPanel
3
- } from "./chunk-F4XLTVQ3.js";
4
- import "./chunk-6XIAPIW6.js";
5
- export {
6
- MembersPanel
7
- };
8
- //# sourceMappingURL=MembersPanel-XNLF3SA4.js.map
@@ -1,7 +0,0 @@
1
- import {
2
- VaultPane
3
- } from "./chunk-JJJEO4ND.js";
4
- export {
5
- VaultPane
6
- };
7
- //# sourceMappingURL=VaultPane-MUWGYVJ7.js.map