@tutti-os/agent-gui 0.0.83 → 0.0.85

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.
@@ -6,7 +6,7 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-XCO6DDLR.js";
9
+ } from "../chunk-FIH7IYLX.js";
10
10
  import "../chunk-HUNUSBQQ.js";
11
11
  import "../chunk-PSLAWU25.js";
12
12
  import "../chunk-CXJEQQR5.js";
@@ -8893,29 +8893,6 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8893
8893
  color: var(--brand-primary, var(--tutti-purple));
8894
8894
  }
8895
8895
 
8896
- .agent-gui-node__provider-rail-avatar:has(
8897
- > .agent-gui-node__provider-rail-launchpad-icon
8898
- ),
8899
- .agent-gui-node__provider-rail-tile:hover:not(:disabled)
8900
- .agent-gui-node__provider-rail-avatar:has(
8901
- > .agent-gui-node__provider-rail-launchpad-icon
8902
- ) {
8903
- border-color: transparent;
8904
- background: transparent;
8905
- }
8906
-
8907
- .agent-gui-node__provider-rail-tile[data-selected="true"]
8908
- .agent-gui-node__provider-rail-avatar:has(
8909
- > .agent-gui-node__provider-rail-launchpad-icon
8910
- ),
8911
- .agent-gui-node__provider-rail-tile[data-selected="true"]:hover:not(:disabled)
8912
- .agent-gui-node__provider-rail-avatar:has(
8913
- > .agent-gui-node__provider-rail-launchpad-icon
8914
- ) {
8915
- border-color: var(--tutti-purple);
8916
- background: var(--transparency-block);
8917
- }
8918
-
8919
8896
  .agent-gui-node__provider-rail-avatar-icon {
8920
8897
  width: 18px;
8921
8898
  height: 18px;
@@ -8950,114 +8927,6 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8950
8927
  object-fit: cover;
8951
8928
  }
8952
8929
 
8953
- .agent-gui-node__provider-rail-launchpad-icon {
8954
- box-sizing: border-box;
8955
- display: grid;
8956
- width: 28px;
8957
- height: 28px;
8958
- grid-template-columns: repeat(2, 1fr);
8959
- gap: 2px;
8960
- padding: 1px;
8961
- border: 0;
8962
- border-radius: 6px;
8963
- background: transparent;
8964
- }
8965
-
8966
- .agent-gui-node__provider-rail-launchpad-item {
8967
- display: grid;
8968
- min-width: 0;
8969
- min-height: 0;
8970
- place-items: center;
8971
- overflow: hidden;
8972
- background: var(--background-fronted);
8973
- border-radius: 4px;
8974
- box-shadow: 0 0 0 0.5px color-mix(in srgb, var(--line-2) 70%, transparent);
8975
- transition: opacity 140ms ease;
8976
- }
8977
-
8978
- .agent-gui-node__provider-rail-launchpad-icon img {
8979
- width: 100%;
8980
- height: 100%;
8981
- object-fit: cover;
8982
- }
8983
-
8984
- .agent-gui-node__empty-hero-launchpad-icon {
8985
- /* Size to the strip's actual content and stay centered. A fixed width narrower
8986
- than the icons left-anchors the overflow, dragging the "centered" selected
8987
- agent off to one side. */
8988
- width: fit-content;
8989
- max-width: 100%;
8990
- height: 48px;
8991
- border: 0;
8992
- border-radius: 0;
8993
- background: transparent;
8994
- box-shadow: none;
8995
- overflow: visible;
8996
- color: var(--tutti-purple);
8997
- animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms
8998
- both;
8999
- }
9000
-
9001
- /* Hero launchpad: agents laid out as one centered horizontal group while
9002
- neighbours fade away from the selected agent. Scoped to the hero so the left
9003
- rail "All" tile (a single composed image) is unaffected. */
9004
- .agent-gui-node__empty-hero-launchpad-icon
9005
- .agent-gui-node__provider-rail-launchpad-icon {
9006
- display: flex;
9007
- width: max-content;
9008
- max-width: 100%;
9009
- height: 48px;
9010
- align-items: center;
9011
- justify-content: center;
9012
- gap: 10px;
9013
- padding: 0;
9014
- border-radius: 0;
9015
- background: transparent;
9016
- overflow: visible;
9017
- }
9018
-
9019
- .agent-gui-node__empty-hero-launchpad-icon
9020
- .agent-gui-node__provider-rail-launchpad-item {
9021
- flex: 0 0 auto;
9022
- width: 36px;
9023
- height: 36px;
9024
- border-radius: 9px;
9025
- transition:
9026
- opacity 220ms ease,
9027
- transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
9028
- box-shadow 220ms ease;
9029
- }
9030
-
9031
- .agent-gui-node__empty-hero-launchpad-icon
9032
- .agent-gui-node__provider-rail-launchpad-item[data-provider-active="true"] {
9033
- transform: scale(1.14);
9034
- box-shadow: 0 0 0 1.5px var(--tutti-purple);
9035
- }
9036
-
9037
- /* Clickable agent switchers: reset native button chrome, keep the same box, and
9038
- give a hover/focus affordance so the strip reads as interactive. */
9039
- button.agent-gui-node__provider-rail-launchpad-item {
9040
- padding: 0;
9041
- border: 0;
9042
- cursor: pointer;
9043
- appearance: none;
9044
- -webkit-appearance: none;
9045
- }
9046
-
9047
- .agent-gui-node__empty-hero-launchpad-icon
9048
- button.agent-gui-node__provider-rail-launchpad-item:hover:not(
9049
- [data-provider-active="true"]
9050
- ) {
9051
- opacity: 1 !important;
9052
- transform: scale(1.08);
9053
- }
9054
-
9055
- .agent-gui-node__empty-hero-launchpad-icon
9056
- button.agent-gui-node__provider-rail-launchpad-item:focus-visible {
9057
- outline: none;
9058
- box-shadow: 0 0 0 1.5px var(--tutti-purple);
9059
- }
9060
-
9061
8930
  .agent-gui-node__provider-rail-tile[data-loading="true"]
9062
8931
  .agent-gui-node__provider-rail-avatar {
9063
8932
  background: linear-gradient(
@@ -9105,12 +8974,13 @@ button.agent-gui-node__provider-rail-launchpad-item {
9105
8974
  place-items: center;
9106
8975
  }
9107
8976
 
9108
- /* The horizontal launchpad strip is wider than the single-icon slot; let the
9109
- slot grow to the strip's width so the selected agent stays centered. */
8977
+ /* The coverflow carousel needs a wider, taller stage than the single-icon
8978
+ slot; keep it centered in the hero column. */
9110
8979
  .agent-gui-node__empty-hero-icon-slot:has(
9111
- > .agent-gui-node__empty-hero-launchpad-icon
8980
+ > .agent-gui-node__empty-hero-carousel
9112
8981
  ) {
9113
- width: auto;
8982
+ width: min(400px, 100%);
8983
+ height: auto;
9114
8984
  }
9115
8985
 
9116
8986
  .agent-gui-node__empty-hero-icon-effect {
@@ -9179,6 +9049,66 @@ button.agent-gui-node__provider-rail-launchpad-item {
9179
9049
  object-fit: contain;
9180
9050
  }
9181
9051
 
9052
+ /* Empty-hero agent carousel ("All" tab): a three.js ring of same-sized agent
9053
+ tiles (see agentGuiHeroCarouselScene.ts). Tiles farther around the ring
9054
+ genuinely shrink and fade with perspective; visuals live on the canvas,
9055
+ while visually-hidden buttons keep the switcher reachable by keyboard,
9056
+ screen readers, and DOM tests. */
9057
+ .agent-gui-node__empty-hero-carousel {
9058
+ position: relative;
9059
+ width: 100%;
9060
+ height: 112px;
9061
+ outline: none;
9062
+ touch-action: pan-y;
9063
+ animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms
9064
+ both;
9065
+ }
9066
+
9067
+ .agent-gui-node__empty-hero-carousel:has(:focus-visible) {
9068
+ border-radius: 12px;
9069
+ box-shadow: 0 0 0 1.5px var(--tutti-purple);
9070
+ }
9071
+
9072
+ .agent-gui-node__empty-hero-carousel-canvas {
9073
+ display: block;
9074
+ width: 100%;
9075
+ height: 100%;
9076
+ opacity: 0;
9077
+ transition: opacity 120ms ease-out;
9078
+
9079
+ /* Fade-out mask: a horizontal band dissolves tiles toward the stage sides
9080
+ (the fully-transparent stops sit where the outermost tiles ride, not at
9081
+ the canvas edges), intersected with a vertical band so tiles sinking
9082
+ down the wheel melt away instead of being cut by the canvas bottom. */
9083
+ mask-image:
9084
+ linear-gradient(
9085
+ 90deg,
9086
+ transparent 12%,
9087
+ #000 36%,
9088
+ #000 64%,
9089
+ transparent 88%
9090
+ ),
9091
+ linear-gradient(180deg, #000 0%, #000 70%, transparent 96%);
9092
+ mask-composite: intersect;
9093
+ }
9094
+
9095
+ .agent-gui-node__empty-hero-carousel[data-icons-ready="true"]
9096
+ > .agent-gui-node__empty-hero-carousel-canvas {
9097
+ opacity: 1;
9098
+ }
9099
+
9100
+ .agent-gui-node__empty-hero-carousel-item {
9101
+ position: absolute;
9102
+ overflow: hidden;
9103
+ width: 1px;
9104
+ height: 1px;
9105
+ margin: -1px;
9106
+ padding: 0;
9107
+ border: 0;
9108
+ clip-path: inset(50%);
9109
+ white-space: nowrap;
9110
+ }
9111
+
9182
9112
  .agent-gui-node__empty-hero-title {
9183
9113
  margin: 0;
9184
9114
  text-align: center;
@@ -9203,11 +9133,16 @@ button.agent-gui-node__provider-rail-launchpad-item {
9203
9133
 
9204
9134
  /* Gate gap is 8px; add 16px so the icon-to-title spacing is 24px. */
9205
9135
  .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-icon-effect,
9206
- .agent-gui-node__empty-provider-gate
9207
- > .agent-gui-node__empty-hero-launchpad-icon {
9136
+ .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-carousel {
9208
9137
  margin-bottom: 16px;
9209
9138
  }
9210
9139
 
9140
+ /* Keep the gate's carousel the same width as the ready hero's so the ring
9141
+ doesn't jump when selection lands on an unavailable agent. */
9142
+ .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-carousel {
9143
+ max-width: min(400px, 100%);
9144
+ }
9145
+
9211
9146
  .agent-gui-node__empty-provider-gate-description {
9212
9147
  max-width: 420px;
9213
9148
  margin: 0;
@@ -5239,6 +5239,7 @@ function firstPresentString6(...values) {
5239
5239
  // shared/agentConversation/projection/agentConversationProjection.ts
5240
5240
  var RENDER_IRRELEVANT_TRANSCRIPT_ROW_FIELDS = /* @__PURE__ */ new Set(["occurredAtUnixMs"]);
5241
5241
  var CODEX_SKILLS_CONTEXT_BUDGET_NOTICE_FRAGMENT = "skill descriptions were shortened to fit the 2% skills context budget";
5242
+ var CODEX_MODEL_METADATA_FALLBACK_NOTICE_FRAGMENT = "defaulting to fallback metadata";
5242
5243
  function projectAgentConversationVM(detail, options = {}) {
5243
5244
  const rows = [];
5244
5245
  const turns = detail.turns;
@@ -5409,7 +5410,7 @@ function dropCodexRuntimeDiagnosticNotices(rows) {
5409
5410
  continue;
5410
5411
  }
5411
5412
  const messages = row.messages.filter(
5412
- (message) => !isCodexSkillsContextBudgetNotice(message)
5413
+ (message) => !isCodexRuntimeDiagnosticNotice(message)
5413
5414
  );
5414
5415
  if (messages.length === 0 && row.thinking.length === 0) {
5415
5416
  continue;
@@ -5422,7 +5423,7 @@ function dropCodexRuntimeDiagnosticNotices(rows) {
5422
5423
  }
5423
5424
  return filteredRows;
5424
5425
  }
5425
- function isCodexSkillsContextBudgetNotice(message) {
5426
+ function isCodexRuntimeDiagnosticNotice(message) {
5426
5427
  const notice = message.systemNotice;
5427
5428
  if (!notice || notice.noticeKind !== "warning") {
5428
5429
  return false;
@@ -5431,7 +5432,7 @@ function isCodexSkillsContextBudgetNotice(message) {
5431
5432
  return false;
5432
5433
  }
5433
5434
  const text = [notice.title, notice.detail, message.body].filter(Boolean).join("\n").toLowerCase();
5434
- return text.includes(CODEX_SKILLS_CONTEXT_BUDGET_NOTICE_FRAGMENT);
5435
+ return text.includes(CODEX_SKILLS_CONTEXT_BUDGET_NOTICE_FRAGMENT) || text.includes(CODEX_MODEL_METADATA_FALLBACK_NOTICE_FRAGMENT);
5435
5436
  }
5436
5437
  function dropRedundantErrorWarningNotices(rows) {
5437
5438
  const turnsWithVisibleError = /* @__PURE__ */ new Set();
@@ -15479,4 +15480,4 @@ export {
15479
15480
  AgentConversationFlow,
15480
15481
  useProjectedAgentConversation
15481
15482
  };
15482
- //# sourceMappingURL=chunk-XCO6DDLR.js.map
15483
+ //# sourceMappingURL=chunk-FIH7IYLX.js.map