camox 0.33.0 → 0.34.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 (100) hide show
  1. package/dist/components/AuthGate.js +5 -4
  2. package/dist/core/createBlock.js +19 -19
  3. package/dist/core/defineDocument.d.ts +7 -0
  4. package/dist/core/defineDocument.js +7 -0
  5. package/dist/features/agent-chat/components/AgentChatSidebar.js +3 -3
  6. package/dist/features/agent-chat/components/AgentChatThread.js +10 -11
  7. package/dist/features/navigation/navigation.d.ts +39 -0
  8. package/dist/features/navigation/navigation.js +231 -0
  9. package/dist/features/preview/CamoxPreview.d.ts +3 -0
  10. package/dist/features/preview/CamoxPreview.js +12 -12
  11. package/dist/features/preview/components/AddBlockSidebar.js +4 -4
  12. package/dist/features/preview/components/AssetLightbox.js +10 -9
  13. package/dist/features/preview/components/CreatePageModal.js +3 -3
  14. package/dist/features/preview/components/FieldToolbar.js +1 -1
  15. package/dist/features/preview/components/PageInfoSidebar.js +23 -23
  16. package/dist/features/preview/components/PageNavigatorSidebar.js +6 -6
  17. package/dist/features/preview/components/PagePicker.js +1 -1
  18. package/dist/features/preview/components/PreviewToolbar.js +3 -3
  19. package/dist/features/preview/components/useUpdateBlockPosition.js +3 -3
  20. package/dist/features/provider/CamoxProvider.js +10 -8
  21. package/dist/features/routes/pageRuntime.js +6 -0
  22. package/dist/features/runtime/pageApp.js +75 -0
  23. package/dist/features/runtime/pageClient.d.ts +7 -0
  24. package/dist/features/runtime/pageClient.js +37 -0
  25. package/dist/features/runtime/pageNavigation.js +170 -0
  26. package/dist/features/runtime/pageServer.d.ts +9 -0
  27. package/dist/features/runtime/pageServer.js +18 -0
  28. package/dist/features/runtime/runtime.d.ts +24 -0
  29. package/dist/features/runtime/runtime.js +44 -0
  30. package/dist/features/runtime/studioApp.d.ts +15 -0
  31. package/dist/features/runtime/studioApp.js +117 -0
  32. package/dist/features/runtime/studioNavigation.js +115 -0
  33. package/dist/features/runtime/studioServer.d.ts +9 -0
  34. package/dist/features/runtime/studioServer.js +18 -0
  35. package/dist/features/studio/CamoxStudio.js +3 -3
  36. package/dist/features/studio/components/Navbar.js +7 -7
  37. package/dist/features/studio/components/ProjectMenu.js +9 -9
  38. package/dist/features/studio/components/UserButton.js +3 -3
  39. package/dist/features/vite/appGeneration.js +16 -5
  40. package/dist/features/vite/blockBoilerplate.js +1 -1
  41. package/dist/features/vite/definitionsSync.js +4 -4
  42. package/dist/features/vite/routeGeneration.js +9 -156
  43. package/dist/features/vite/runtimeDev.js +270 -0
  44. package/dist/features/vite/utils.js +3 -1
  45. package/dist/features/vite/vite.d.ts +22 -3
  46. package/dist/features/vite/vite.js +36 -19
  47. package/dist/hooks/use-file-upload.js +3 -1
  48. package/dist/lib/api-client.js +6 -3
  49. package/dist/lib/auth.js +45 -68
  50. package/dist/lib/queries.js +6 -4
  51. package/dist/lib/telemetry.js +1 -24
  52. package/dist/lib/utils.js +1 -1
  53. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +114 -0
  54. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +25 -0
  55. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +1 -0
  56. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +1 -0
  57. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +20 -0
  58. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +8 -0
  59. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +1 -0
  60. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +18 -0
  61. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +161 -0
  62. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +6 -0
  63. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +54 -0
  64. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +8 -0
  65. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +32 -0
  66. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.d.ts +115 -0
  67. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +1 -0
  68. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +49 -0
  69. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +1 -0
  70. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +6 -0
  71. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +343 -0
  72. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +48 -0
  73. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +695 -0
  74. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +1 -0
  75. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +1 -0
  76. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +5 -0
  77. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.d.ts +38 -0
  78. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.d.ts +1 -0
  79. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.d.ts +65 -0
  80. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +69 -0
  81. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +1 -0
  82. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +1 -0
  83. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +1 -0
  84. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +1 -0
  85. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +10 -0
  86. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +1 -0
  87. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +1 -0
  88. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +1 -0
  89. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +28 -0
  90. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +49 -0
  91. package/package.json +34 -12
  92. package/skills/camox-block/SKILL.md +4 -4
  93. package/skills/camox-cli/SKILL.md +3 -3
  94. package/skills/camox-layout/SKILL.md +2 -2
  95. package/dist/features/routes/ogRoute.d.ts +0 -12
  96. package/dist/features/routes/ogRoute.js +0 -20
  97. package/dist/features/routes/pageRoute.d.ts +0 -48
  98. package/dist/features/routes/pageRoute.js +0 -254
  99. package/dist/lib/api-client.d.ts +0 -7
  100. package/dist/lib/queries.d.ts +0 -12
@@ -4,13 +4,14 @@ import { c } from "react/compiler-runtime";
4
4
  //#region src/components/AuthGate.tsx
5
5
  function AuthGate(t0) {
6
6
  const $ = c(1);
7
- if ($[0] !== "4192eaab250d489efbc0f5cc22f05bd4c40209bc6ef7f711bf8c40a7b16edbf7") {
7
+ if ($[0] !== "6de4384ece40c4b5e89894da23db2a5fb013bb295503fd2026710f49f69dd9a6") {
8
8
  for (let $i = 0; $i < 1; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
9
- $[0] = "4192eaab250d489efbc0f5cc22f05bd4c40209bc6ef7f711bf8c40a7b16edbf7";
9
+ $[0] = "6de4384ece40c4b5e89894da23db2a5fb013bb295503fd2026710f49f69dd9a6";
10
10
  }
11
- const { authenticated, unauthenticated } = t0;
11
+ const { authenticated, unauthenticated, loading: t1 } = t0;
12
+ const loading = t1 === void 0 ? null : t1;
12
13
  const { isAuthenticated, isLoading } = useAuthState();
13
- if (isLoading) return unauthenticated;
14
+ if (isLoading) return loading;
14
15
  return isAuthenticated ? authenticated : unauthenticated;
15
16
  }
16
17
 
@@ -1,3 +1,4 @@
1
+ import { useLocation } from "../features/navigation/navigation.js";
1
2
  import { useProjectSlug } from "../lib/auth.js";
2
3
  import { blockMutations, pageQueries, projectQueries, repeatableItemMutations } from "../lib/queries.js";
3
4
  import { trackClientEvent } from "../lib/telemetry-client.js";
@@ -19,7 +20,6 @@ import { Label } from "@camox/ui/label";
19
20
  import { Popover, PopoverContent, PopoverTrigger } from "@camox/ui/popover";
20
21
  import { Type as Type$1 } from "@sinclair/typebox";
21
22
  import { useMutation, useQuery } from "@tanstack/react-query";
22
- import { useLocation } from "@tanstack/react-router";
23
23
  import { useSelector } from "@xstate/store-react";
24
24
  import { generateKeyBetween } from "fractional-indexing";
25
25
  import * as React from "react";
@@ -289,9 +289,9 @@ function createBlock(options) {
289
289
  };
290
290
  const Embed = (t0) => {
291
291
  const $ = c(59);
292
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
292
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
293
293
  for (let $i = 0; $i < 59; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
294
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
294
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
295
295
  }
296
296
  const { name, children } = t0;
297
297
  const blockContext = React.use(Context);
@@ -536,9 +536,9 @@ function createBlock(options) {
536
536
  };
537
537
  const Link = (t0) => {
538
538
  const $ = c(38);
539
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
539
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
540
540
  for (let $i = 0; $i < 38; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
541
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
541
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
542
542
  }
543
543
  const { name, children } = t0;
544
544
  const blockContext = React.use(Context);
@@ -777,9 +777,9 @@ function createBlock(options) {
777
777
  };
778
778
  const Image = (t0) => {
779
779
  const $ = c(22);
780
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
780
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
781
781
  for (let $i = 0; $i < 22; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
782
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
782
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
783
783
  }
784
784
  const { name, children } = t0;
785
785
  const blockContext = React.use(Context);
@@ -901,9 +901,9 @@ function createBlock(options) {
901
901
  };
902
902
  const File = (t0) => {
903
903
  const $ = c(9);
904
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
904
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
905
905
  for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
906
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
906
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
907
907
  }
908
908
  const { name, children } = t0;
909
909
  const blockContext = React.use(Context);
@@ -978,9 +978,9 @@ function createBlock(options) {
978
978
  const FileList = _AssetList;
979
979
  const RepeaterItemWrapper = (t0) => {
980
980
  const $ = c(9);
981
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
981
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
982
982
  for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
983
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
983
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
984
984
  }
985
985
  const { itemId, blockId, mode, children } = t0;
986
986
  const isContentEditable = useIsEditable(mode);
@@ -1021,9 +1021,9 @@ function createBlock(options) {
1021
1021
  };
1022
1022
  const RepeaterHoverProvider = (t0) => {
1023
1023
  const $ = c(7);
1024
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
1024
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
1025
1025
  for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1026
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
1026
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
1027
1027
  }
1028
1028
  const { blockId, fieldName, children } = t0;
1029
1029
  const isContentEditable = useIsEditable("site");
@@ -1054,9 +1054,9 @@ function createBlock(options) {
1054
1054
  };
1055
1055
  const Repeater = (t0) => {
1056
1056
  const $ = c(27);
1057
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
1057
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
1058
1058
  for (let $i = 0; $i < 27; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1059
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
1059
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
1060
1060
  }
1061
1061
  const { name, children } = t0;
1062
1062
  const blockContext = React.use(Context);
@@ -1181,9 +1181,9 @@ function createBlock(options) {
1181
1181
  };
1182
1182
  const BlockComponent = (t0) => {
1183
1183
  const $ = c(78);
1184
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
1184
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
1185
1185
  for (let $i = 0; $i < 78; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1186
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
1186
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
1187
1187
  }
1188
1188
  const { blockData, mode, isFirstBlock, showAddBlockTop, showAddBlockBottom, addBlockAfterPosition } = t0;
1189
1189
  const isContentEditable = useIsEditable(mode);
@@ -1517,9 +1517,9 @@ function createBlock(options) {
1517
1517
  */
1518
1518
  const Detached = (t0) => {
1519
1519
  const $ = c(31);
1520
- if ($[0] !== "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407") {
1520
+ if ($[0] !== "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711") {
1521
1521
  for (let $i = 0; $i < 31; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1522
- $[0] = "9cd21990f1cb26b8613f764719b3c2aa84ab101438380ec49833d48adbdfe407";
1522
+ $[0] = "9231ca5a45ac243503ccaac821f875febfac8cd23cd7c9d63dd14d5e87dab711";
1523
1523
  }
1524
1524
  const { children } = t0;
1525
1525
  const ctx = React.use(Context);
@@ -0,0 +1,7 @@
1
+ import { UseHeadInput } from "unhead/types";
2
+
3
+ //#region src/core/defineDocument.d.ts
4
+ type CamoxDocument = UseHeadInput;
5
+ declare function defineDocument(document: CamoxDocument): CamoxDocument;
6
+ //#endregion
7
+ export { CamoxDocument, defineDocument };
@@ -0,0 +1,7 @@
1
+ //#region src/core/defineDocument.ts
2
+ function defineDocument(document) {
3
+ return document;
4
+ }
5
+
6
+ //#endregion
7
+ export { defineDocument };
@@ -1,10 +1,10 @@
1
+ import { useLocation } from "../../navigation/navigation.js";
1
2
  import { useProjectSlug } from "../../../lib/auth.js";
2
3
  import { projectQueries } from "../../../lib/queries.js";
3
4
  import { previewStore } from "../../preview/previewStore.js";
4
5
  import { AgentChatThread } from "./AgentChatThread.js";
5
6
  import { c } from "react/compiler-runtime";
6
7
  import { useQuery } from "@tanstack/react-query";
7
- import { useLocation } from "@tanstack/react-router";
8
8
  import { useSelector } from "@xstate/store-react";
9
9
  import * as React from "react";
10
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -15,9 +15,9 @@ import { Alert, AlertDescription, AlertTitle } from "@camox/ui/alert";
15
15
  //#region src/features/agent-chat/components/AgentChatSidebar.tsx
16
16
  const AgentChatSidebar = () => {
17
17
  const $ = c(20);
18
- if ($[0] !== "fa80c907e2ec181da4f3cb91fbf7d8dc7f1330b0892397f5d2dd7e7058b18f66") {
18
+ if ($[0] !== "0cd25adb7637781b4a21ccdb22bb01ea44234579d0d340e1a833455c0506f264") {
19
19
  for (let $i = 0; $i < 20; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
20
- $[0] = "fa80c907e2ec181da4f3cb91fbf7d8dc7f1330b0892397f5d2dd7e7058b18f66";
20
+ $[0] = "0cd25adb7637781b4a21ccdb22bb01ea44234579d0d340e1a833455c0506f264";
21
21
  }
22
22
  const previewSource = useSelector(previewStore, _temp);
23
23
  const pageScaffoldContext = useSelector(previewStore, _temp2);
@@ -1,11 +1,11 @@
1
- import { getAuthCookieHeader } from "../../../lib/auth.js";
1
+ import { useNavigate } from "../../navigation/navigation.js";
2
+ import { getAuthCookieHeader, getAuthRequestCredentials } from "../../../lib/auth.js";
2
3
  import { getApiClient, getApiUrl, getEnvironmentName } from "../../../lib/api-client.js";
3
4
  import { cn } from "../../../lib/utils.js";
4
5
  import { previewStore } from "../../preview/previewStore.js";
5
6
  import { buildAgentChatToolLabelContext, getToolCallLabel } from "../agent-chat-labels.js";
6
7
  import { AgentToolCallCard } from "./AgentToolCallCard.js";
7
8
  import { c } from "react/compiler-runtime";
8
- import { useNavigate } from "@tanstack/react-router";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { Button } from "@camox/ui/button";
@@ -106,9 +106,9 @@ const markdownComponents = {
106
106
  };
107
107
  const MessageBubble = (t0) => {
108
108
  const $ = c(34);
109
- if ($[0] !== "f3b8a7664c3b99923b26867f113f97eb01d8277569c870abd2bc42ddb6f634bf") {
109
+ if ($[0] !== "2567c826f7e9a4c13b5857bd7da85cb17fb8cc96c39c6c50398fc8a1ce17f1d3") {
110
110
  for (let $i = 0; $i < 34; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
111
- $[0] = "f3b8a7664c3b99923b26867f113f97eb01d8277569c870abd2bc42ddb6f634bf";
111
+ $[0] = "2567c826f7e9a4c13b5857bd7da85cb17fb8cc96c39c6c50398fc8a1ce17f1d3";
112
112
  }
113
113
  const { message, source, isThinkingActive, activeThinkingDurationKeys, thinkingDurations, toolLabelContext, onApprovalResponse } = t0;
114
114
  const isUser = message.role === "user";
@@ -226,9 +226,9 @@ const MessageBubble = (t0) => {
226
226
  };
227
227
  const AgentThinkingIndicator = (t0) => {
228
228
  const $ = c(7);
229
- if ($[0] !== "f3b8a7664c3b99923b26867f113f97eb01d8277569c870abd2bc42ddb6f634bf") {
229
+ if ($[0] !== "2567c826f7e9a4c13b5857bd7da85cb17fb8cc96c39c6c50398fc8a1ce17f1d3") {
230
230
  for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
231
- $[0] = "f3b8a7664c3b99923b26867f113f97eb01d8277569c870abd2bc42ddb6f634bf";
231
+ $[0] = "2567c826f7e9a4c13b5857bd7da85cb17fb8cc96c39c6c50398fc8a1ce17f1d3";
232
232
  }
233
233
  const { durationSeconds } = t0;
234
234
  if (durationSeconds !== void 0) {
@@ -283,16 +283,15 @@ const AgentChatThread = ({ projectId, currentPath, source, disabled, focusKey =
283
283
  return createPageScaffoldMessages(pageScaffoldContext);
284
284
  }, [pageScaffoldContext]);
285
285
  const connection = React.useMemo(() => fetchServerSentEvents(`${getApiUrl()}/agent/chat`, () => {
286
- const headers = {
287
- "Better-Auth-Cookie": getAuthCookieHeader(),
288
- "x-camox-client": "studio"
289
- };
286
+ const authCookieHeader = getAuthCookieHeader();
287
+ const headers = { "x-camox-client": "studio" };
288
+ if (authCookieHeader) headers["Better-Auth-Cookie"] = authCookieHeader;
290
289
  const environmentName = getEnvironmentName();
291
290
  if (environmentName) headers["x-environment-name"] = environmentName;
292
291
  if (__CAMOX_TELEMETRY_DISABLED__) headers["x-camox-telemetry-disabled"] = "1";
293
292
  return {
294
293
  headers,
295
- credentials: "omit",
294
+ credentials: getAuthRequestCredentials(authCookieHeader),
296
295
  body: {
297
296
  projectId,
298
297
  currentPath,
@@ -0,0 +1,39 @@
1
+ import { UseNavigateResult } from "../../node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.js";
2
+ import * as React from "react";
3
+ import { LinkProps as LinkProps$1 } from "@tanstack/react-router";
4
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
+
6
+ //#region src/features/navigation/navigation.d.ts
7
+ interface LocationState {
8
+ hash: string;
9
+ href: string;
10
+ pathname: string;
11
+ search: string;
12
+ }
13
+ interface NavigateOptions {
14
+ replace?: boolean;
15
+ to: string;
16
+ }
17
+ type LinkProps = LinkProps$1 & React.AnchorHTMLAttributes<HTMLAnchorElement>;
18
+ declare function NavigationProvider({
19
+ children,
20
+ getLocation,
21
+ initialLocation,
22
+ navigate
23
+ }: {
24
+ children: React.ReactNode;
25
+ getLocation?: () => LocationState;
26
+ initialLocation?: LocationState;
27
+ navigate?: (options: NavigateOptions) => Promise<void> | void;
28
+ }): _$react_jsx_runtime0.JSX.Element;
29
+ declare function useLocation<T = LocationState>(options?: {
30
+ select?: (location: LocationState) => T;
31
+ }): T;
32
+ declare function useNavigate(): ((options: NavigateOptions) => Promise<void> | void) | UseNavigateResult<string>;
33
+ declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
34
+ declare function Navigate({
35
+ replace,
36
+ to
37
+ }: NavigateOptions): _$react_jsx_runtime0.JSX.Element | null;
38
+ //#endregion
39
+ export { Link, LinkProps, Navigate, NavigationProvider, useLocation, useNavigate };
@@ -0,0 +1,231 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import * as React from "react";
3
+ import { Link as Link$1, Navigate as Navigate$1, useLocation as useLocation$1, useNavigate as useNavigate$1 } from "@tanstack/react-router";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/features/navigation/navigation.tsx
7
+ const NavigationContext = React.createContext(null);
8
+ function getBrowserLocation() {
9
+ if (typeof window === "undefined") return {
10
+ hash: "",
11
+ href: "",
12
+ pathname: "/",
13
+ search: ""
14
+ };
15
+ return {
16
+ hash: window.location.hash,
17
+ href: window.location.href,
18
+ pathname: window.location.pathname,
19
+ search: window.location.search
20
+ };
21
+ }
22
+ function toHref(to) {
23
+ if (to.startsWith("#")) return `${getBrowserLocation().pathname}${to}`;
24
+ return to;
25
+ }
26
+ async function browserNavigate({ replace, to }) {
27
+ if (typeof window === "undefined") return;
28
+ const href = toHref(to);
29
+ if (replace) window.history.replaceState(null, "", href);
30
+ else window.history.pushState(null, "", href);
31
+ window.dispatchEvent(new PopStateEvent("popstate"));
32
+ }
33
+ function NavigationProvider(t0) {
34
+ const $ = c(10);
35
+ if ($[0] !== "ddcd98e64cdc09695f4e9227379a4d90d1598ced9253a16b3dee21623e108a54") {
36
+ for (let $i = 0; $i < 10; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
37
+ $[0] = "ddcd98e64cdc09695f4e9227379a4d90d1598ced9253a16b3dee21623e108a54";
38
+ }
39
+ const { children, getLocation: t1, initialLocation, navigate: t2 } = t0;
40
+ const getLocation = t1 === void 0 ? getBrowserLocation : t1;
41
+ const navigate = t2 === void 0 ? browserNavigate : t2;
42
+ const [location, setLocation] = React.useState(initialLocation ?? getLocation);
43
+ let t3;
44
+ let t4;
45
+ if ($[1] !== getLocation) {
46
+ t3 = () => {
47
+ const updateLocation = () => setLocation(getLocation());
48
+ window.addEventListener("popstate", updateLocation);
49
+ window.addEventListener("camox:navigation", updateLocation);
50
+ return () => {
51
+ window.removeEventListener("popstate", updateLocation);
52
+ window.removeEventListener("camox:navigation", updateLocation);
53
+ };
54
+ };
55
+ t4 = [getLocation];
56
+ $[1] = getLocation;
57
+ $[2] = t3;
58
+ $[3] = t4;
59
+ } else {
60
+ t3 = $[2];
61
+ t4 = $[3];
62
+ }
63
+ React.useEffect(t3, t4);
64
+ let t5;
65
+ if ($[4] !== location || $[5] !== navigate) {
66
+ t5 = {
67
+ location,
68
+ navigate
69
+ };
70
+ $[4] = location;
71
+ $[5] = navigate;
72
+ $[6] = t5;
73
+ } else t5 = $[6];
74
+ const value = t5;
75
+ let t6;
76
+ if ($[7] !== children || $[8] !== value) {
77
+ t6 = /* @__PURE__ */ jsx(NavigationContext.Provider, {
78
+ value,
79
+ children
80
+ });
81
+ $[7] = children;
82
+ $[8] = value;
83
+ $[9] = t6;
84
+ } else t6 = $[9];
85
+ return t6;
86
+ }
87
+ function useLocation(options) {
88
+ const context = React.useContext(NavigationContext);
89
+ if (context) {
90
+ if (options?.select) return options.select(context.location);
91
+ return context.location;
92
+ }
93
+ return useLocation$1(options);
94
+ }
95
+ function useNavigate() {
96
+ const context = React.useContext(NavigationContext);
97
+ if (context) return context.navigate;
98
+ return useNavigate$1();
99
+ }
100
+ const Link = React.forwardRef(function Link(props, ref) {
101
+ const $ = c(33);
102
+ if ($[0] !== "ddcd98e64cdc09695f4e9227379a4d90d1598ced9253a16b3dee21623e108a54") {
103
+ for (let $i = 0; $i < 33; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
104
+ $[0] = "ddcd98e64cdc09695f4e9227379a4d90d1598ced9253a16b3dee21623e108a54";
105
+ }
106
+ const context = React.useContext(NavigationContext);
107
+ if (!context) {
108
+ let t0;
109
+ if ($[1] !== props || $[2] !== ref) {
110
+ t0 = /* @__PURE__ */ jsx(Link$1, {
111
+ ...props,
112
+ ref
113
+ });
114
+ $[1] = props;
115
+ $[2] = ref;
116
+ $[3] = t0;
117
+ } else t0 = $[3];
118
+ return t0;
119
+ }
120
+ let activeProps;
121
+ let children;
122
+ let onClick;
123
+ let rest;
124
+ let target;
125
+ let to;
126
+ if ($[4] !== props) {
127
+ ({activeProps, children, onClick, target, to, ...rest} = props);
128
+ $[4] = props;
129
+ $[5] = activeProps;
130
+ $[6] = children;
131
+ $[7] = onClick;
132
+ $[8] = rest;
133
+ $[9] = target;
134
+ $[10] = to;
135
+ } else {
136
+ activeProps = $[5];
137
+ children = $[6];
138
+ onClick = $[7];
139
+ rest = $[8];
140
+ target = $[9];
141
+ to = $[10];
142
+ }
143
+ let href;
144
+ let t0;
145
+ let t1;
146
+ if ($[11] !== context.location.pathname || $[12] !== to) {
147
+ href = toHref(String(to));
148
+ t0 = context.location.pathname;
149
+ t1 = new URL(href, "http://camox.local");
150
+ $[11] = context.location.pathname;
151
+ $[12] = to;
152
+ $[13] = href;
153
+ $[14] = t0;
154
+ $[15] = t1;
155
+ } else {
156
+ href = $[13];
157
+ t0 = $[14];
158
+ t1 = $[15];
159
+ }
160
+ const activeAnchorProps = t0 === t1.pathname ? activeProps : void 0;
161
+ const t2 = activeAnchorProps?.className;
162
+ let t3;
163
+ if ($[16] !== rest.className || $[17] !== t2) {
164
+ t3 = [rest.className, t2].filter(Boolean);
165
+ $[16] = rest.className;
166
+ $[17] = t2;
167
+ $[18] = t3;
168
+ } else t3 = $[18];
169
+ const t4 = t3.join(" ") || void 0;
170
+ let t5;
171
+ if ($[19] !== context || $[20] !== href || $[21] !== onClick || $[22] !== target) {
172
+ t5 = (event) => {
173
+ onClick?.(event);
174
+ if (event.defaultPrevented) return;
175
+ if (target && target !== "_self") return;
176
+ if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) return;
177
+ if (event.button !== 0) return;
178
+ event.preventDefault();
179
+ context.navigate({ to: href });
180
+ };
181
+ $[19] = context;
182
+ $[20] = href;
183
+ $[21] = onClick;
184
+ $[22] = target;
185
+ $[23] = t5;
186
+ } else t5 = $[23];
187
+ let t6;
188
+ if ($[24] !== activeAnchorProps || $[25] !== children || $[26] !== href || $[27] !== ref || $[28] !== rest || $[29] !== t4 || $[30] !== t5 || $[31] !== target) {
189
+ t6 = /* @__PURE__ */ jsx("a", {
190
+ ...rest,
191
+ ...activeAnchorProps,
192
+ ref,
193
+ href,
194
+ target,
195
+ className: t4,
196
+ onClick: t5,
197
+ children
198
+ });
199
+ $[24] = activeAnchorProps;
200
+ $[25] = children;
201
+ $[26] = href;
202
+ $[27] = ref;
203
+ $[28] = rest;
204
+ $[29] = t4;
205
+ $[30] = t5;
206
+ $[31] = target;
207
+ $[32] = t6;
208
+ } else t6 = $[32];
209
+ return t6;
210
+ });
211
+ function Navigate({ replace, to }) {
212
+ const context = React.useContext(NavigationContext);
213
+ if (!context) return /* @__PURE__ */ jsx(Navigate$1, {
214
+ replace,
215
+ to
216
+ });
217
+ React.useEffect(() => {
218
+ context.navigate({
219
+ replace,
220
+ to
221
+ });
222
+ }, [
223
+ context,
224
+ replace,
225
+ to
226
+ ]);
227
+ return null;
228
+ }
229
+
230
+ //#endregion
231
+ export { Link, Navigate, NavigationProvider, useLocation, useNavigate };
@@ -33,6 +33,9 @@ declare function usePreviewedPage(): {
33
33
  layout: {
34
34
  id: number;
35
35
  layoutId: string;
36
+ contentUpdatedAt: number;
37
+ livePublishedCheckpointId: number | null;
38
+ updatedAt: number;
36
39
  beforeBlockIds: number[];
37
40
  afterBlockIds: number[];
38
41
  } | null;
@@ -1,3 +1,4 @@
1
+ import { useLocation, useNavigate } from "../navigation/navigation.js";
1
2
  import { actionsStore } from "../provider/actionsStore.js";
2
3
  import { useIsAuthenticated, useProjectSlug } from "../../lib/auth.js";
3
4
  import { getApiClient } from "../../lib/api-client.js";
@@ -17,11 +18,10 @@ import { PreviewPanel } from "./components/PreviewPanel.js";
17
18
  import { RightSidebar } from "./components/RightSidebar.js";
18
19
  import { c } from "react/compiler-runtime";
19
20
  import { keepPreviousData, useQuery, useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
20
- import { useLocation, useNavigate } from "@tanstack/react-router";
21
21
  import { useSelector } from "@xstate/store-react";
22
22
  import * as React from "react";
23
- import { queryKeys } from "@camox/api-contract/query-keys";
24
23
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
24
+ import { queryKeys } from "@camox/api-contract/query-keys";
25
25
 
26
26
  //#region src/features/preview/CamoxPreview.tsx
27
27
  /**
@@ -51,9 +51,9 @@ function pageStructureQueryFn(path, projectSlug, source) {
51
51
  }
52
52
  function usePreviewedPage() {
53
53
  const $ = c(26);
54
- if ($[0] !== "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3") {
54
+ if ($[0] !== "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772") {
55
55
  for (let $i = 0; $i < 26; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
56
- $[0] = "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3";
56
+ $[0] = "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772";
57
57
  }
58
58
  const { pathname } = useLocation();
59
59
  const queryClient = useQueryClient();
@@ -150,9 +150,9 @@ function _temp(state) {
150
150
  }
151
151
  const BlockRenderer = (t0) => {
152
152
  const $ = c(23);
153
- if ($[0] !== "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3") {
153
+ if ($[0] !== "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772") {
154
154
  for (let $i = 0; $i < 23; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
155
- $[0] = "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3";
155
+ $[0] = "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772";
156
156
  }
157
157
  const { blockId, mode, showAddBlockTop, showAddBlockBottom } = t0;
158
158
  const previewSource = useSelector(previewStore, _temp3);
@@ -295,9 +295,9 @@ const PageContent = () => {
295
295
  };
296
296
  function useHydrateDraftCache() {
297
297
  const $ = c(7);
298
- if ($[0] !== "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3") {
298
+ if ($[0] !== "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772") {
299
299
  for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
300
- $[0] = "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3";
300
+ $[0] = "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772";
301
301
  }
302
302
  const isAuthenticated = useIsAuthenticated();
303
303
  const queryClient = useQueryClient();
@@ -348,9 +348,9 @@ function useHydrateDraftCache() {
348
348
  function _temp4() {}
349
349
  const CamoxPreview = (t0) => {
350
350
  const $ = c(35);
351
- if ($[0] !== "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3") {
351
+ if ($[0] !== "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772") {
352
352
  for (let $i = 0; $i < 35; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
353
- $[0] = "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3";
353
+ $[0] = "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772";
354
354
  }
355
355
  const { children } = t0;
356
356
  const isAuthenticated = useIsAuthenticated();
@@ -561,9 +561,9 @@ const CamoxPreview = (t0) => {
561
561
  };
562
562
  function usePreviewPagesActions() {
563
563
  const $ = c(13);
564
- if ($[0] !== "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3") {
564
+ if ($[0] !== "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772") {
565
565
  for (let $i = 0; $i < 13; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
566
- $[0] = "368878cc357f559a41241bfa8387ebbcf6457dabf75b71445e9ead672ed8deb3";
566
+ $[0] = "670b66d6cc9d1448ea3caf37ecbbb00789310266338f543cbce54775c049c772";
567
567
  }
568
568
  const navigate = useNavigate();
569
569
  const { pathname } = useLocation();
@@ -1,3 +1,4 @@
1
+ import { useLocation } from "../../navigation/navigation.js";
1
2
  import { useProjectSlug } from "../../../lib/auth.js";
2
3
  import { blockMutations, blockQueries, projectQueries } from "../../../lib/queries.js";
3
4
  import { trackClientEvent } from "../../../lib/telemetry-client.js";
@@ -8,12 +9,11 @@ import { useRequireDraftSource } from "../../../core/hooks/useRequireDraftSource
8
9
  import { usePreviewedPage } from "../CamoxPreview.js";
9
10
  import { c } from "react/compiler-runtime";
10
11
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
11
- import { useLocation } from "@tanstack/react-router";
12
12
  import { useSelector } from "@xstate/store-react";
13
13
  import { generateKeyBetween } from "fractional-indexing";
14
14
  import * as React from "react";
15
- import { queryKeys } from "@camox/api-contract/query-keys";
16
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
+ import { queryKeys } from "@camox/api-contract/query-keys";
17
17
  import { Button } from "@camox/ui/button";
18
18
  import { ArrowLeft } from "lucide-react";
19
19
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@camox/ui/command";
@@ -22,9 +22,9 @@ import { PanelContent } from "@camox/ui/panel";
22
22
  //#region src/features/preview/components/AddBlockSidebar.tsx
23
23
  const AddBlockSidebar = () => {
24
24
  const $ = c(58);
25
- if ($[0] !== "27e7cb036200fff6fa774c3b5c9184e0f19bdb13228e0c714ed0cebcdf6abec5") {
25
+ if ($[0] !== "e90c6519081e1159c7b7b2dea03fb3f0a6ad85218cb70141acd0c7462b3c8ff5") {
26
26
  for (let $i = 0; $i < 58; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
27
- $[0] = "27e7cb036200fff6fa774c3b5c9184e0f19bdb13228e0c714ed0cebcdf6abec5";
27
+ $[0] = "e90c6519081e1159c7b7b2dea03fb3f0a6ad85218cb70141acd0c7462b3c8ff5";
28
28
  }
29
29
  const [highlightedValue, setHighlightedValue] = React.useState("");
30
30
  const queryClient = useQueryClient();