@k2b/cloud 0.39.0 → 0.40.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 (194) hide show
  1. package/README.md +8 -0
  2. package/package.json +8 -4
  3. package/src/_internal/app-favicon.ts +4 -2
  4. package/src/_internal/capabilities.ts +72 -48
  5. package/src/_internal/capability-reviews.ts +81 -0
  6. package/src/_internal/capability-schemas.ts +29 -0
  7. package/src/_internal/capability-sentences.ts +216 -1
  8. package/src/_internal/capability-streams.ts +7 -0
  9. package/src/_internal/define-app.ts +36 -15
  10. package/src/_internal/font-preloads.ts +2 -1
  11. package/src/_internal/runtime-watcher.ts +6 -0
  12. package/src/_internal/static-assets.ts +52 -3
  13. package/src/_internal/status-preserving-ssr.ts +2 -0
  14. package/src/access/PermissionEditor.tsx +2 -2
  15. package/src/account/EntitySearch.tsx +1 -1
  16. package/src/ai/action-review.ts +101 -0
  17. package/src/ai/background-review.ts +72 -0
  18. package/src/ai/capabilities.ts +29 -11
  19. package/src/ai/capability-execution.ts +76 -43
  20. package/src/ai/capability-result.ts +95 -0
  21. package/src/ai/chat/action-card.ts +398 -0
  22. package/src/ai/chat/action-messages.ts +129 -0
  23. package/src/ai/chat/action-question.browser-harness.tsx +245 -0
  24. package/src/ai/chat/action-question.fixtures.ts +733 -0
  25. package/src/ai/chat/action-question.tsx +669 -0
  26. package/src/ai/chat/blocks.tsx +19 -25
  27. package/src/ai/chat/message-actions.tsx +6 -0
  28. package/src/ai/chat/tool-action.tsx +481 -0
  29. package/src/ai/chat/turn-view.tsx +10 -160
  30. package/src/ai/chat/view-block.tsx +15 -5
  31. package/src/ai/chat-task-contracts.ts +4 -1
  32. package/src/ai/chat-task-reasons-migrate.ts +7 -0
  33. package/src/ai/chat-task-reasons.ts +1 -1
  34. package/src/ai/chat-tasks.ts +55 -25
  35. package/src/ai/client/controller.ts +59 -0
  36. package/src/ai/default-tools.ts +9 -1
  37. package/src/ai/executor.ts +190 -39
  38. package/src/ai/index.ts +2 -0
  39. package/src/ai/migrate.ts +11 -2
  40. package/src/ai/projects-routes.ts +3 -0
  41. package/src/ai/protocol.ts +14 -2
  42. package/src/ai/recent-resources.ts +240 -0
  43. package/src/ai/recent-sent-refs.ts +38 -0
  44. package/src/ai/routes.ts +145 -1
  45. package/src/ai/runtime.ts +1 -0
  46. package/src/ai/skills-routes.ts +3 -0
  47. package/src/ai/skills.ts +10 -1
  48. package/src/ai/store.ts +227 -24
  49. package/src/ai/tool-audit.ts +8 -0
  50. package/src/ai/tool-wording.ts +24 -2
  51. package/src/ai/types.ts +28 -3
  52. package/src/api/accounts-entities.ts +2 -1
  53. package/src/api/admin-ai-projects.ts +2 -0
  54. package/src/api/admin-ai-skills.ts +2 -0
  55. package/src/api/admin-ai-usage.ts +2 -0
  56. package/src/api/admin-geoip.ts +80 -0
  57. package/src/api/admin-identity.ts +3 -0
  58. package/src/api/admin-lifecycle.ts +3 -0
  59. package/src/api/admin-outgoing-mail.ts +2 -0
  60. package/src/api/app-approval.ts +46 -5
  61. package/src/api/approvals-loader.ts +23 -1
  62. package/src/api/approvals.ts +2 -0
  63. package/src/api/auth.ts +25 -6
  64. package/src/api/capabilities.ts +44 -11
  65. package/src/api/capability-streams.ts +12 -0
  66. package/src/api/help.ts +4 -28
  67. package/src/api/index.ts +6 -1
  68. package/src/api/lasting-access-messages.ts +17 -0
  69. package/src/api/mcp.ts +3 -0
  70. package/src/api/me-panel-consent.ts +71 -0
  71. package/src/api/me.ts +80 -33
  72. package/src/api/search.ts +3 -1
  73. package/src/api/sync-ops.ts +2 -0
  74. package/src/api/widgets.ts +3 -0
  75. package/src/approvals/Approvals.tsx +180 -238
  76. package/src/approvals/messages.ts +12 -24
  77. package/src/browser/CloudResourceSearch.browser-harness.tsx +10 -2
  78. package/src/browser/app-approval.ts +54 -5
  79. package/src/browser/commands.ts +22 -6
  80. package/src/browser/composer-catalog.ts +45 -3
  81. package/src/browser/composer-insert.ts +10 -0
  82. package/src/browser/composer-open-messages.ts +17 -0
  83. package/src/browser/composer-open.ts +110 -0
  84. package/src/browser/discoverable-command.ts +6 -0
  85. package/src/browser/hints.ts +6 -0
  86. package/src/browser/live-connection.ts +26 -2
  87. package/src/browser/navigation-apps.ts +7 -0
  88. package/src/browser/panel-context-bridge.ts +30 -0
  89. package/src/browser/panel-context-receiver.ts +53 -0
  90. package/src/browser/panel-menu.tsx +56 -0
  91. package/src/browser/panel-messages.ts +11 -0
  92. package/src/browser/panel-shortcuts.ts +31 -0
  93. package/src/browser/panel-slot.ts +412 -10
  94. package/src/browser/panel.ts +37 -0
  95. package/src/browser/search-commands.ts +6 -3
  96. package/src/capabilities/client.ts +8 -2
  97. package/src/capabilities/reviews.ts +205 -0
  98. package/src/capabilities/server.ts +10 -3
  99. package/src/capabilities/testing.ts +47 -0
  100. package/src/capabilities/types.ts +2 -2
  101. package/src/cli/account.ts +13 -3
  102. package/src/cli/admin/geoip.ts +115 -0
  103. package/src/cli/admin/index.ts +3 -0
  104. package/src/contracts/app-approval.ts +120 -13
  105. package/src/contracts/approvals.ts +2 -2
  106. package/src/contracts/capabilities.ts +410 -18
  107. package/src/contracts/geoip.ts +42 -0
  108. package/src/contracts/index.ts +3 -0
  109. package/src/contracts/panel-context-plain.ts +99 -0
  110. package/src/contracts/panel-context.ts +93 -0
  111. package/src/contracts/seen-hints.ts +35 -0
  112. package/src/server/client-ip.ts +5 -0
  113. package/src/server/help-payload.ts +38 -0
  114. package/src/server/middleware/auth.ts +11 -1
  115. package/src/server/middleware/middleware.ts +9 -0
  116. package/src/server/middleware/no-transform.ts +19 -0
  117. package/src/server/middleware/rate-limit.ts +4 -6
  118. package/src/server/request-context/address.ts +45 -0
  119. package/src/server/request-context/geoip.ts +380 -0
  120. package/src/server/request-context/index.ts +33 -0
  121. package/src/server/request-context/user-agent.ts +95 -0
  122. package/src/services/app-approval.ts +382 -59
  123. package/src/services/approvals/device.ts +7 -5
  124. package/src/services/approvals/index.ts +6 -5
  125. package/src/services/approvals/list.ts +26 -5
  126. package/src/services/auth-flows/notification-sender.ts +3 -0
  127. package/src/services/geoip/index.ts +164 -0
  128. package/src/services/geoip/store.ts +30 -0
  129. package/src/services/geoip/upload.ts +150 -0
  130. package/src/services/identity/routes.ts +5 -1
  131. package/src/services/index.ts +11 -0
  132. package/src/services/known-browsers.ts +312 -0
  133. package/src/services/login-address-store.ts +51 -0
  134. package/src/services/login-context.ts +118 -0
  135. package/src/services/mandates/index.ts +3 -0
  136. package/src/services/mandates/policy.ts +15 -3
  137. package/src/services/notifications/email-frame.ts +1 -1
  138. package/src/services/oauth-tokens.ts +16 -2
  139. package/src/services/panel-context-consent.ts +58 -0
  140. package/src/services/service-account-credentials.ts +21 -0
  141. package/src/services/session/index.ts +97 -16
  142. package/src/services/session/recent.ts +13 -0
  143. package/src/services/webauthn.ts +12 -0
  144. package/src/shared/email-html.ts +2 -0
  145. package/src/shared/help.ts +3 -0
  146. package/src/shared-text/cursor.ts +22 -0
  147. package/src/shared-text/documents.ts +142 -0
  148. package/src/shared-text/events.ts +43 -0
  149. package/src/shared-text/index.ts +12 -0
  150. package/src/shared-text/log.ts +48 -0
  151. package/src/shared-text/text-diff.ts +23 -0
  152. package/src/shared-text/types.ts +41 -0
  153. package/src/ssr/AdminLayout.tsx +2 -0
  154. package/src/ssr/AppLaunchpadPanel.tsx +2 -2
  155. package/src/ssr/CloudShell.island.tsx +10 -2
  156. package/src/ssr/Layout.tsx +25 -2
  157. package/src/ssr/LayoutHelp.browser-harness.tsx +2 -0
  158. package/src/ssr/LayoutHelp.tsx +435 -274
  159. package/src/ssr/LayoutHelpPanel.browser-harness.tsx +136 -0
  160. package/src/ssr/LayoutHelpTrigger.tsx +27 -2
  161. package/src/ssr/MobileNavigation.tsx +2 -2
  162. package/src/ssr/PanelLayout.tsx +9 -1
  163. package/src/ssr/PanelRuntime.island.tsx +7 -0
  164. package/src/ssr/PanelSlot.tsx +53 -3
  165. package/src/ssr/ShellRuntime.island.tsx +11 -2
  166. package/src/ssr/app-color.ts +14 -9
  167. package/src/ssr/app-navigation.ts +16 -3
  168. package/src/ssr/compact-shell.browser-harness.ts +30 -22
  169. package/src/ssr/dialog-app-colors.browser-harness.tsx +43 -0
  170. package/src/ssr/help-messages.ts +4 -0
  171. package/src/ssr/help.ts +20 -0
  172. package/src/ssr/hints.ts +25 -0
  173. package/src/ssr/index.ts +2 -0
  174. package/src/ssr/islands/index.ts +4 -3
  175. package/src/ssr/layout-context.ts +2 -0
  176. package/src/ssr/layout-help-article.server.ts +50 -0
  177. package/src/ssr/layout-help-start.ts +33 -7
  178. package/src/ssr/panel-consent.ts +29 -0
  179. package/src/ssr/panel-context.ts +10 -0
  180. package/src/ssr/panel-slot.browser-harness.tsx +53 -4
  181. package/src/ssr/platform-messages.ts +18 -0
  182. package/src/ssr/shell-data.tsx +2 -1
  183. package/src/styles/effects.css +198 -9
  184. package/src/styles/file-chooser.css +2 -1
  185. package/src/styles/global.css +49 -12
  186. package/src/styles/panel.css +47 -4
  187. package/src/styles/resource-search.css +6 -2
  188. package/src/styles/tokens.css +17 -11
  189. package/src/styles/utilities-buttons.css +3 -2
  190. package/src/styles/utilities-data.css +2 -1
  191. package/src/styles/utilities-feedback.css +2 -2
  192. package/src/styles/utilities-layout.css +3 -13
  193. package/src/styles/utilities-markdown-editor.css +6 -6
  194. package/src/styles/utilities-navigation.css +17 -22
@@ -95,7 +95,7 @@
95
95
  .md-editor-tool {
96
96
  @apply inline-flex items-center justify-center;
97
97
  @apply w-7 h-7 rounded;
98
- @apply text-zinc-500 dark:text-zinc-400;
98
+ @apply text-dimmed;
99
99
  @apply hover:bg-zinc-200 hover:text-zinc-800;
100
100
  @apply dark:hover:bg-zinc-700 dark:hover:text-zinc-100;
101
101
  @apply transition-colors;
@@ -339,7 +339,7 @@
339
339
  pointer-events: none !important;
340
340
  user-select: none !important;
341
341
  z-index: 0 !important;
342
- @apply text-zinc-400 dark:text-zinc-500;
342
+ @apply text-dimmed;
343
343
  white-space: pre-wrap !important;
344
344
  word-wrap: break-word !important;
345
345
  word-break: normal !important;
@@ -354,7 +354,7 @@
354
354
  on-screen but dimmed so prose stands out. */
355
355
  .md-syntax,
356
356
  .md-marker {
357
- @apply text-zinc-400 dark:text-zinc-500;
357
+ @apply text-dimmed;
358
358
  }
359
359
 
360
360
  /* Bold + headers via `text-shadow` instead of `font-weight`.
@@ -422,7 +422,7 @@
422
422
  doesn't affect layout, unlike border-left or padding-left). The bar
423
423
  sits visually outside the text column edge so prose stays aligned. */
424
424
  .md-quote {
425
- @apply text-zinc-600 dark:text-zinc-400;
425
+ @apply text-dimmed;
426
426
  box-shadow: inset 3px 0 0 var(--color-zinc-300);
427
427
  }
428
428
 
@@ -475,7 +475,7 @@
475
475
  /* Horizontal rule (---) — just dim the marker; can't draw an actual
476
476
  rule line without inserting layout-shifting elements. */
477
477
  .md-hr {
478
- @apply text-zinc-400 dark:text-zinc-500;
478
+ @apply text-dimmed;
479
479
  }
480
480
 
481
481
  /* Completion match — every occurrence of a registered completion
@@ -498,7 +498,7 @@
498
498
  .md-editor-stats {
499
499
  @apply flex justify-start items-center gap-3;
500
500
  @apply px-3 py-1;
501
- @apply text-[10px] text-zinc-400 dark:text-zinc-500;
501
+ @apply text-[10px] text-dimmed;
502
502
  @apply font-mono select-none;
503
503
  letter-spacing: 0.02em;
504
504
  }
@@ -176,12 +176,16 @@
176
176
  }
177
177
  }
178
178
 
179
+ /* The current navigation target carries the app's navigation fill and ink. */
179
180
  @utility sidebar-icon-action-active {
180
- @apply bg-blue-50 text-blue-700 hover:bg-blue-100 hover:text-blue-800;
181
- @apply dark:bg-blue-950/45 dark:text-blue-300 dark:hover:bg-blue-900/45 dark:hover:text-blue-200;
182
- box-shadow:
183
- inset 0 0 0 1px color-mix(in srgb, var(--color-blue-500) 22%, transparent),
184
- var(--ui-control-bevel);
181
+ color: var(--ui-app-accent-text);
182
+ background: var(--ui-app-selected-nav);
183
+ box-shadow: none;
184
+
185
+ &:hover {
186
+ color: var(--ui-app-accent-text);
187
+ background: var(--ui-app-selected-nav);
188
+ }
185
189
  }
186
190
 
187
191
  @utility sidebar-icon-action-success {
@@ -225,7 +229,7 @@
225
229
 
226
230
  @utility sidebar-item-active {
227
231
  position: relative;
228
- background: var(--ui-selected);
232
+ background: var(--ui-app-selected-nav);
229
233
  color: var(--ui-app-accent-text);
230
234
  @apply font-medium;
231
235
  box-shadow: var(--ui-shadow-surface);
@@ -714,7 +718,7 @@
714
718
  @utility list-item-active {
715
719
  border-left: 0;
716
720
  position: relative;
717
- background: var(--ui-selected);
721
+ background: var(--ui-app-selected);
718
722
  color: var(--ui-app-accent-text);
719
723
  @apply rounded-lg font-medium;
720
724
  box-shadow: var(--ui-shadow-surface);
@@ -1047,23 +1051,14 @@
1047
1051
  padding: 0 0.25rem;
1048
1052
  }
1049
1053
 
1054
+ /* The box and the app ink; the chip comes from the shared `k2b-icon-tile` on the same element. */
1050
1055
  .sidebar-header-icon {
1051
1056
  width: 1.4375rem;
1052
1057
  height: 1.4375rem;
1053
- border-radius: 0.4375rem;
1054
- background: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 9%, transparent) !important;
1055
- color: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 80%, black) !important;
1056
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 16%, transparent);
1057
- }
1058
-
1059
- .sidebar-header-icon-mobile {
1060
- background: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 9%, transparent) !important;
1061
- color: color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 80%, black) !important;
1062
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 16%, transparent);
1063
1058
  }
1064
1059
 
1065
- .dark :is(.sidebar-header-icon, .sidebar-header-icon-mobile) {
1066
- color: color-mix(in srgb, var(--app-accent, var(--color-blue-400)) 58%, white) !important;
1060
+ :is(.sidebar-header-icon, .sidebar-header-icon-mobile) {
1061
+ color: var(--ui-app-accent-text) !important;
1067
1062
  }
1068
1063
 
1069
1064
  .sidebar-header-title {
@@ -1100,8 +1095,8 @@
1100
1095
 
1101
1096
  .sidebar-icon-action-active {
1102
1097
  color: var(--ui-app-accent-text);
1103
- background: var(--ui-selected);
1104
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--app-accent, var(--color-blue-500)) 20%, transparent);
1098
+ background: var(--ui-app-selected-nav);
1099
+ box-shadow: none;
1105
1100
  }
1106
1101
 
1107
1102
  :is(.sidebar-item-active, .list-item-active) {
@@ -1114,7 +1109,7 @@
1114
1109
  }
1115
1110
 
1116
1111
  .file-tree > li > div[data-state="selected"] {
1117
- background: var(--ui-selected) !important;
1112
+ background: var(--ui-app-selected) !important;
1118
1113
  box-shadow: none !important;
1119
1114
  }
1120
1115