@k2b/cloud 0.30.0 → 0.31.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.
- package/package.json +3 -2
- package/src/_internal/app-presentation.ts +22 -1
- package/src/_internal/capabilities.ts +2 -2
- package/src/_internal/define-app.ts +14 -4
- package/src/_internal/registry.ts +50 -6
- package/src/_internal/widget-declarations.ts +53 -0
- package/src/ai/approval-routes.ts +40 -4
- package/src/ai/approvals.ts +68 -10
- package/src/ai/chat/blocks.tsx +53 -32
- package/src/ai/chat/live-turn.browser-harness.tsx +4 -1
- package/src/ai/chat/message-actions.tsx +3 -1
- package/src/ai/chat/messages.ts +18 -0
- package/src/ai/chat/tool-groups.ts +66 -12
- package/src/ai/chat/tool-names.ts +4 -2
- package/src/ai/chat/turn-layout.ts +8 -0
- package/src/ai/chat/turn-view.tsx +94 -25
- package/src/ai/chat/web-tools.tsx +95 -1
- package/src/ai/client/controller.ts +6 -3
- package/src/ai/code-runtime-tools.ts +50 -17
- package/src/ai/code-source-contracts.ts +25 -21
- package/src/ai/code-source-tools.ts +3 -1
- package/src/ai/executor.ts +170 -14
- package/src/ai/fetch-file-tool.ts +41 -4
- package/src/ai/firecrawl-tools.ts +87 -4
- package/src/ai/index.ts +8 -0
- package/src/ai/migrate.ts +113 -2
- package/src/ai/protocol.ts +22 -1
- package/src/ai/routes.ts +11 -0
- package/src/ai/runtime.ts +46 -7
- package/src/ai/store.ts +66 -1
- package/src/ai/tool-audit.ts +11 -1
- package/src/ai/tools.ts +91 -3
- package/src/ai/types.ts +39 -0
- package/src/ai/web-provenance.ts +103 -0
- package/src/api/capabilities.ts +3 -2
- package/src/api/widgets.ts +36 -5
- package/src/browser/CloudResourceSearch.tsx +1 -1
- package/src/browser/command-shortcuts.ts +21 -6
- package/src/browser/spotlight-position.ts +4 -1
- package/src/browser/widgets.ts +7 -5
- package/src/capabilities/executions.ts +3 -0
- package/src/cli/commands.ts +20 -0
- package/src/cli/index.ts +16 -0
- package/src/cli/plugin.ts +30 -0
- package/src/contracts/app.ts +34 -2
- package/src/contracts/registry.ts +9 -1
- package/src/contracts/widgets.ts +47 -2
- package/src/desktop/solid.tsx +6 -7
- package/src/server/index.ts +1 -0
- package/src/server/widget-request.ts +27 -0
- package/src/services/approvals/index.ts +225 -0
- package/src/services/approvals/migrate.ts +33 -0
- package/src/shared/app-presentation.ts +11 -0
- package/src/shared/email-html.ts +43 -8
- package/src/ssr/AdminLayout.tsx +4 -7
- package/src/ssr/AppLaunchpad.island.tsx +1 -1
- package/src/ssr/Layout.tsx +38 -14
- package/src/ssr/LayoutFooter.tsx +1 -1
- package/src/ssr/LayoutHeader.tsx +17 -20
- package/src/ssr/LayoutHelp.tsx +1 -1
- package/src/ssr/LayoutRail.tsx +1 -2
- package/src/ssr/PageTrail.tsx +23 -0
- package/src/ssr/PageTrailRow.island.tsx +20 -0
- package/src/ssr/PageTrailRuntime.island.tsx +26 -0
- package/src/ssr/ProfilePreferences.island.tsx +7 -3
- package/src/ssr/islands/index.ts +1 -0
- package/src/ssr/layout-runtime.ts +60 -0
- package/src/ssr/mobile-menu-history.ts +1 -1
- package/src/ssr/page-trail-runtime.ts +313 -0
- package/src/ssr/page-trail.browser-harness.tsx +216 -0
- package/src/ssr/page-trail.ts +59 -0
- package/src/ssr/platform-messages.ts +4 -0
- package/src/styles/effects.css +21 -4
- package/src/styles/global.css +35 -2
- package/src/styles/utilities-layout.css +24 -1
- package/src/styles/utilities-navigation.css +6 -18
package/src/styles/global.css
CHANGED
|
@@ -281,8 +281,12 @@ solid-island {
|
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
-
/* Cloud has
|
|
285
|
-
|
|
284
|
+
/* Cloud has three shell modes. Phones, below md, get the header and no rail.
|
|
285
|
+
From md, signed-in people get the rail instead of the header: up to 2xl the
|
|
286
|
+
app area meets the window's top, right and bottom edges, and from 2xl it is
|
|
287
|
+
a card with the shell spacing. Anonymous pages keep the header and the card
|
|
288
|
+
from md. */
|
|
289
|
+
@media (max-width: 767px) {
|
|
286
290
|
.cloud-app-canvas {
|
|
287
291
|
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
|
|
288
292
|
}
|
|
@@ -309,6 +313,35 @@ solid-island {
|
|
|
309
313
|
|
|
310
314
|
}
|
|
311
315
|
|
|
316
|
+
/* Flush: the app area is one opaque surface from the rail to the window's
|
|
317
|
+
edges, without padding, radius, shadow, or border. The rail keeps the app
|
|
318
|
+
canvas, so the change of surface alone separates the two; no line does. The
|
|
319
|
+
outermost workspace and the notices above it lose their frame, so nothing
|
|
320
|
+
draws a box inside the app area. */
|
|
321
|
+
@media (min-width: 768px) and (max-width: 1535px) {
|
|
322
|
+
.cloud-app-canvas[data-layout-authenticated] {
|
|
323
|
+
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
|
|
324
|
+
}
|
|
325
|
+
.cloud-app-canvas[data-layout-authenticated] > .layout-rail {
|
|
326
|
+
width: 3rem;
|
|
327
|
+
margin-inline-start: 0;
|
|
328
|
+
padding-bottom: var(--ui-space-shell);
|
|
329
|
+
}
|
|
330
|
+
.cloud-app-canvas[data-layout-authenticated] > .layout-shell-content {
|
|
331
|
+
gap: 0;
|
|
332
|
+
background: var(--k2b-surface);
|
|
333
|
+
}
|
|
334
|
+
.cloud-app-canvas[data-layout-authenticated] .layout-content-main .k2b-app-workspace:not(.k2b-app-workspace *) {
|
|
335
|
+
border: 0;
|
|
336
|
+
border-radius: 0;
|
|
337
|
+
box-shadow: none;
|
|
338
|
+
}
|
|
339
|
+
.cloud-app-canvas[data-layout-authenticated] > .layout-shell-content > :not(.layout-content-main) .k2b-notice-card {
|
|
340
|
+
border: 0;
|
|
341
|
+
border-radius: 0;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
312
345
|
.cloud-mobile-menu .k2b-panel-dialog__header {
|
|
313
346
|
gap: .5rem;
|
|
314
347
|
padding-inline: 1rem;
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
/* Shared shell frame and overview composition. */
|
|
241
|
-
@media (min-width:
|
|
241
|
+
@media (min-width: 768px) {
|
|
242
242
|
.cloud-app-canvas .layout-header {
|
|
243
243
|
padding: 0.375rem 0.75rem 0.375rem 1.125rem;
|
|
244
244
|
border-color: transparent;
|
|
@@ -601,3 +601,26 @@
|
|
|
601
601
|
.dark .panel-dialog-tabs > button[aria-pressed="true"] {
|
|
602
602
|
color: var(--color-zinc-50);
|
|
603
603
|
}
|
|
604
|
+
|
|
605
|
+
/* The shell's row for the way up on pages without a workspace: the page title
|
|
606
|
+
with "‹ Parent" or the path above it, 46 px high like a workspace head and
|
|
607
|
+
without a line under it. It shows only on a page with a page above it; a
|
|
608
|
+
workspace's head or the page's own `PageTrail` takes its place. */
|
|
609
|
+
.layout-page-head {
|
|
610
|
+
display: none;
|
|
611
|
+
min-height: 2.875rem;
|
|
612
|
+
flex: none;
|
|
613
|
+
align-items: center;
|
|
614
|
+
padding: 0.25rem 0.5rem;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
.layout-shell-content:not(:has(.layout-content-main .k2b-app-workspace, .k2b-page-title:not([data-fallback]))) .layout-page-head[data-trail="up"] {
|
|
618
|
+
display: flex;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/* After going up, the row that led down to where the person came from stays
|
|
622
|
+
marked, with the hover tint and nothing that moves. */
|
|
623
|
+
[data-page-trail-recent],
|
|
624
|
+
[data-page-trail-recent] > :is(td, th) {
|
|
625
|
+
background-color: var(--ui-hover);
|
|
626
|
+
}
|
|
@@ -829,18 +829,15 @@
|
|
|
829
829
|
}
|
|
830
830
|
|
|
831
831
|
/* Profile preferences stay Cloud-owned because their placement follows the
|
|
832
|
-
global shell
|
|
833
|
-
server-rendered variant; no client layout state
|
|
832
|
+
global shell: the avatar is the last control of the rail. Pointer media
|
|
833
|
+
queries select an already server-rendered variant; no client layout state
|
|
834
|
+
or placeholder is needed. */
|
|
834
835
|
.layout-profile-preferences {
|
|
835
836
|
position: relative;
|
|
836
837
|
display: inline-flex;
|
|
837
838
|
flex: none;
|
|
838
839
|
}
|
|
839
840
|
|
|
840
|
-
.layout-profile-preferences[data-placement="rail"] {
|
|
841
|
-
display: none;
|
|
842
|
-
}
|
|
843
|
-
|
|
844
841
|
.layout-profile-preferences__link,
|
|
845
842
|
.layout-profile-preferences__dropdown-trigger {
|
|
846
843
|
display: none;
|
|
@@ -868,9 +865,12 @@
|
|
|
868
865
|
box-shadow: var(--ui-focus);
|
|
869
866
|
}
|
|
870
867
|
|
|
868
|
+
/* Beside the rail, growing upward from the avatar. */
|
|
871
869
|
.layout-profile-preferences__panel {
|
|
872
870
|
position: absolute;
|
|
873
871
|
z-index: 100;
|
|
872
|
+
bottom: 0;
|
|
873
|
+
left: 100%;
|
|
874
874
|
display: none;
|
|
875
875
|
width: min(14rem, calc(100vw - 1rem));
|
|
876
876
|
flex-direction: column;
|
|
@@ -887,16 +887,6 @@
|
|
|
887
887
|
color: var(--color-zinc-300);
|
|
888
888
|
}
|
|
889
889
|
|
|
890
|
-
.layout-profile-preferences[data-placement="header"] .layout-profile-preferences__panel {
|
|
891
|
-
top: 100%;
|
|
892
|
-
right: 0;
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
.layout-profile-preferences[data-placement="rail"] .layout-profile-preferences__panel {
|
|
896
|
-
bottom: 0;
|
|
897
|
-
left: 100%;
|
|
898
|
-
}
|
|
899
|
-
|
|
900
890
|
.layout-profile-preferences:focus-within .layout-profile-preferences__panel {
|
|
901
891
|
opacity: 1;
|
|
902
892
|
visibility: visible;
|
|
@@ -923,9 +913,7 @@
|
|
|
923
913
|
visibility: visible;
|
|
924
914
|
pointer-events: auto;
|
|
925
915
|
}
|
|
926
|
-
}
|
|
927
916
|
|
|
928
|
-
@media (min-width: 1024px) and (hover: hover) and (pointer: fine) {
|
|
929
917
|
.layout-profile-preferences__link,
|
|
930
918
|
.layout-profile-preferences__panel {
|
|
931
919
|
display: flex;
|