@olonjs/cli 3.0.139 → 3.0.140

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.
@@ -1661,7 +1661,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1661
1661
  "dev": "vite",
1662
1662
  "dev:clean": "vite --force",
1663
1663
  "verify:webmcp": "node scripts/webmcp-feature-check.mjs",
1664
- "prebuild": "node scripts/sync-pages-to-public.mjs && node scripts/generate-llms-txt.mjs",
1664
+ "prebuild": "node scripts/sync-pages-to-public.mjs && node scripts/generate-llms-txt.mjs && node scripts/bake.mjs",
1665
1665
  "build": "tsc && vite build",
1666
1666
  "dist": "bash ./src2Code.sh --template alpha src .cursor vercel.json components.json index.html tsconfig.json package.json tsconfig.node.json vite.config.ts scripts ",
1667
1667
  "preview": "vite preview",
@@ -1674,7 +1674,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1674
1674
  "@tiptap/extension-link": "^2.11.5",
1675
1675
  "@tiptap/react": "^2.11.5",
1676
1676
  "@tiptap/starter-kit": "^2.11.5",
1677
- "@olonjs/core": "^1.1.3",
1677
+ "@olonjs/core": "^1.1.4",
1678
1678
  "class-variance-authority": "^0.7.1",
1679
1679
  "clsx": "^2.1.1",
1680
1680
  "lucide-react": "^0.474.0",
@@ -2582,20 +2582,18 @@ cat << 'END_OF_FILE_CONTENT' > "src/App.tsx"
2582
2582
  * Data from getHydratedData (file-backed or draft); assets from public/assets/images.
2583
2583
  * Supports Hybrid Persistence: Local Filesystem (Dev) or Cloud Bridge (Prod).
2584
2584
  */
2585
- import { useCallback, useEffect, useMemo, useRef, useState, Suspense, lazy } from 'react';
2586
- // Visitor path uses the runtime-only bundle (~28 KB gz), per ADR-0009 D7.
2587
- // The full @olonjs/core is loaded on demand only when the URL targets /admin.
2588
- import { OlonJSEngine } from '@olonjs/core/runtime';
2589
- import type { JsonPagesConfig, LibraryImageEntry, ProjectState } from '@olonjs/core/runtime';
2590
- import { normalizeBasePath, withBasePath } from '@olonjs/core/runtime';
2585
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2586
+ import { JsonPagesEngine } from '@olonjs/core';
2587
+ import type { JsonPagesConfig, LibraryImageEntry, ProjectState } from '@olonjs/core';
2588
+ import { normalizeBasePath, withBasePath } from '@olonjs/core';
2591
2589
  import { ComponentRegistry } from '@/lib/ComponentRegistry';
2592
2590
  import { SECTION_SCHEMAS, SECTION_SUBMISSION_SCHEMAS } from '@/lib/schemas';
2593
2591
  import { addSectionConfig } from '@/lib/addSectionConfig';
2594
2592
  import { getHydratedData } from '@/lib/draftStorage';
2595
2593
  import type { SiteConfig, ThemeConfig, MenuConfig, PageConfig } from '@/types';
2596
- import type { DeployPhase, StepId } from '@olonjs/core/runtime';
2597
- import { DEPLOY_STEPS } from '@olonjs/core/runtime';
2598
- import { startCloudSaveStream } from '@olonjs/core/runtime';
2594
+ import type { DeployPhase, StepId } from '@olonjs/core';
2595
+ import { DEPLOY_STEPS } from '@olonjs/core';
2596
+ import { startCloudSaveStream } from '@olonjs/core';
2599
2597
  import siteData from '@/data/config/site.json';
2600
2598
  import themeData from '@/data/config/theme.json';
2601
2599
  import menuData from '@/data/config/menu.json';
@@ -2605,23 +2603,9 @@ import { EmptyTenantView } from '@/components/empty-tenant';
2605
2603
  import { Skeleton } from '@/components/ui/skeleton';
2606
2604
  import { ThemeProvider } from '@/components/ThemeProvider';
2607
2605
  import { useOlonForms } from '@/lib/useOlonForms';
2608
- import { OlonFormsContext } from '@olonjs/core/runtime';
2606
+ import { OlonFormsContext } from '@olonjs/core';
2609
2607
  import { iconMap } from '@/lib/IconResolver';
2610
2608
 
2611
- /**
2612
- * Engine selector. Visitors get OlonJSEngine (~28 KB gz); /admin paths
2613
- * lazy-load the full JsonPagesEngine (~128 KB gz) which mounts the
2614
- * Studio editor surface. The check runs at module load time — once per
2615
- * page, before React mounts — so Vite statically splits the chunks.
2616
- * See ADR-0008 + ADR-0009 + docs/plans/core-studio-split.md (Task 3.1).
2617
- */
2618
- const isAdminPath =
2619
- typeof window !== 'undefined' && window.location.pathname.startsWith('/admin');
2620
-
2621
- const LazyJsonPagesEngine = lazy(() =>
2622
- import('@olonjs/core').then((m) => ({ default: m.JsonPagesEngine })),
2623
- );
2624
-
2625
2609
  import tenantCss from './index.css?inline';
2626
2610
 
2627
2611
  // Cloud Configuration (Injected by Vercel/Netlify Env Vars)
@@ -3683,12 +3667,8 @@ function App() {
3683
3667
  {shouldRenderEngine ? (
3684
3668
  isTenantEmpty ? (
3685
3669
  <EmptyTenantView />
3686
- ) : isAdminPath ? (
3687
- <Suspense fallback={null}>
3688
- <LazyJsonPagesEngine config={config} />
3689
- </Suspense>
3690
3670
  ) : (
3691
- <OlonJSEngine config={config} />
3671
+ <JsonPagesEngine config={config} />
3692
3672
  )
3693
3673
  ) : null}
3694
3674
  {isCloudMode && (contentMode === 'error' || contentFallback?.reasonCode === 'CLOUD_REFRESH_FAILED') ? (
@@ -3864,7 +3844,7 @@ END_OF_FILE_CONTENT
3864
3844
  echo "Creating src/components/empty-tenant/schema.ts..."
3865
3845
  cat << 'END_OF_FILE_CONTENT' > "src/components/empty-tenant/schema.ts"
3866
3846
  import { z } from 'zod';
3867
- import { BaseSectionData } from '@olonjs/core/runtime';
3847
+ import { BaseSectionData } from '@olonjs/core';
3868
3848
 
3869
3849
  export const EmptyTenantSchema = BaseSectionData.extend({
3870
3850
  title: z.string().optional().describe('ui:text'),
@@ -3887,7 +3867,7 @@ mkdir -p "src/components/form-demo"
3887
3867
  echo "Creating src/components/form-demo/View.tsx..."
3888
3868
  cat << 'END_OF_FILE_CONTENT' > "src/components/form-demo/View.tsx"
3889
3869
  import { Icon } from '@/lib/IconResolver';
3890
- import { useFormState } from '@olonjs/core/runtime';
3870
+ import { useFormState } from '@olonjs/core';
3891
3871
  import type { FormDemoData } from './types';
3892
3872
 
3893
3873
  type FormDemoViewProps = {
@@ -4051,7 +4031,7 @@ END_OF_FILE_CONTENT
4051
4031
  echo "Creating src/components/form-demo/schema.ts..."
4052
4032
  cat << 'END_OF_FILE_CONTENT' > "src/components/form-demo/schema.ts"
4053
4033
  import { z } from 'zod';
4054
- import { BaseSectionData, WithFormRecipient } from '@olonjs/core/runtime';
4034
+ import { BaseSectionData, WithFormRecipient } from '@olonjs/core';
4055
4035
 
4056
4036
  export const FormDemoSchema = BaseSectionData.merge(WithFormRecipient).extend({
4057
4037
  icon: z.string().optional().describe('ui:icon-picker'),
@@ -4090,7 +4070,7 @@ END_OF_FILE_CONTENT
4090
4070
  mkdir -p "src/components/save-drawer"
4091
4071
  echo "Creating src/components/save-drawer/DeployConnector.tsx..."
4092
4072
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DeployConnector.tsx"
4093
- import type { StepState } from '@olonjs/core/runtime';
4073
+ import type { StepState } from '@olonjs/core';
4094
4074
 
4095
4075
  interface DeployConnectorProps {
4096
4076
  fromState: StepState;
@@ -4136,7 +4116,7 @@ END_OF_FILE_CONTENT
4136
4116
  echo "Creating src/components/save-drawer/DeployNode.tsx..."
4137
4117
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DeployNode.tsx"
4138
4118
  import type { CSSProperties } from 'react';
4139
- import type { DeployStep, StepState } from '@olonjs/core/runtime';
4119
+ import type { DeployStep, StepState } from '@olonjs/core';
4140
4120
 
4141
4121
  interface DeployNodeProps {
4142
4122
  step: DeployStep;
@@ -4224,8 +4204,8 @@ echo "Creating src/components/save-drawer/DopaDrawer.tsx..."
4224
4204
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DopaDrawer.tsx"
4225
4205
  import { useEffect, useMemo, useState } from 'react';
4226
4206
  import { createPortal } from 'react-dom';
4227
- import type { StepId, StepState } from '@olonjs/core/runtime';
4228
- import { DEPLOY_STEPS } from '@olonjs/core/runtime';
4207
+ import type { StepId, StepState } from '@olonjs/core';
4208
+ import { DEPLOY_STEPS } from '@olonjs/core';
4229
4209
  import fontsCss from '@/fonts.css?inline';
4230
4210
  import saverStyleCss from './saverStyle.css?inline';
4231
4211
  import { DeployNode } from './DeployNode';
@@ -5432,7 +5412,7 @@ import {
5432
5412
  Code2, Quote, SquareCode,
5433
5413
  Link2, Unlink2, ImagePlus, Eraser,
5434
5414
  } from 'lucide-react';
5435
- import { STUDIO_EVENTS, useConfig, useStudio } from '@olonjs/core/runtime';
5415
+ import { STUDIO_EVENTS, useConfig, useStudio } from '@olonjs/core';
5436
5416
  import type { TiptapData, TiptapSettings } from './types';
5437
5417
 
5438
5418
  // ── UI primitives ─────────────────────────────────────────────────
@@ -5755,7 +5735,7 @@ END_OF_FILE_CONTENT
5755
5735
  echo "Creating src/components/tiptap/schema.ts..."
5756
5736
  cat << 'END_OF_FILE_CONTENT' > "src/components/tiptap/schema.ts"
5757
5737
  import { z } from 'zod';
5758
- import { BaseSectionData } from '@olonjs/core/runtime';
5738
+ import { BaseSectionData } from '@olonjs/core';
5759
5739
 
5760
5740
  export const TiptapSchema = BaseSectionData.extend({
5761
5741
  content: z.string().default('').describe('ui:editorial-markdown'),
@@ -5776,7 +5756,7 @@ END_OF_FILE_CONTENT
5776
5756
  mkdir -p "src/components/ui"
5777
5757
  echo "Creating src/components/ui/OlonMark.tsx..."
5778
5758
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/OlonMark.tsx"
5779
- import { cn } from '@olonjs/core/runtime'
5759
+ import { cn } from '@olonjs/core'
5780
5760
 
5781
5761
  interface OlonMarkProps {
5782
5762
  size?: number
@@ -5866,7 +5846,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/accordion.tsx"
5866
5846
  import * as React from "react"
5867
5847
  import { Accordion as AccordionPrimitive } from "radix-ui"
5868
5848
 
5869
- import { cn } from "@olonjs/core/runtime"
5849
+ import { cn } from "@olonjs/core"
5870
5850
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"
5871
5851
 
5872
5852
  function Accordion({
@@ -5970,7 +5950,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/avatar.tsx"
5970
5950
  import * as React from "react"
5971
5951
  import { Avatar as AvatarPrimitive } from "radix-ui"
5972
5952
 
5973
- import { cn } from "@olonjs/core/runtime"
5953
+ import { cn } from "@olonjs/core"
5974
5954
 
5975
5955
  function Avatar({
5976
5956
  className,
@@ -6085,7 +6065,7 @@ echo "Creating src/components/ui/badge.tsx..."
6085
6065
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/badge.tsx"
6086
6066
  import * as React from 'react'
6087
6067
  import { cva, type VariantProps } from 'class-variance-authority'
6088
- import { cn } from '@olonjs/core/runtime'
6068
+ import { cn } from '@olonjs/core'
6089
6069
 
6090
6070
  const badgeVariants = cva(
6091
6071
  'inline-flex items-center px-2.5 py-0.5 text-xs font-medium transition-colors',
@@ -6120,7 +6100,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/breadcrumb.tsx"
6120
6100
  import * as React from "react"
6121
6101
  import { Slot } from "radix-ui"
6122
6102
 
6123
- import { cn } from "@olonjs/core/runtime"
6103
+ import { cn } from "@olonjs/core"
6124
6104
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
6125
6105
 
6126
6106
  function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
@@ -6247,7 +6227,7 @@ echo "Creating src/components/ui/button.tsx..."
6247
6227
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/button.tsx"
6248
6228
  import * as React from 'react'
6249
6229
  import { cva, type VariantProps } from 'class-variance-authority'
6250
- import { cn } from '@olonjs/core/runtime'
6230
+ import { cn } from '@olonjs/core'
6251
6231
 
6252
6232
  const buttonVariants = cva(
6253
6233
  'inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40 shrink-0',
@@ -6308,7 +6288,7 @@ END_OF_FILE_CONTENT
6308
6288
  echo "Creating src/components/ui/card.tsx..."
6309
6289
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/card.tsx"
6310
6290
  import * as React from 'react'
6311
- import { cn } from '@olonjs/core/runtime'
6291
+ import { cn } from '@olonjs/core'
6312
6292
 
6313
6293
  const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
6314
6294
  ({ className, ...props }, ref) => (
@@ -6367,7 +6347,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/checkbox.tsx"
6367
6347
  import * as React from "react"
6368
6348
  import { Checkbox as CheckboxPrimitive } from "radix-ui"
6369
6349
 
6370
- import { cn } from "@olonjs/core/runtime"
6350
+ import { cn } from "@olonjs/core"
6371
6351
  import { CheckIcon } from "lucide-react"
6372
6352
 
6373
6353
  function Checkbox({
@@ -6407,7 +6387,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/dialog.tsx"
6407
6387
  import * as React from "react"
6408
6388
  import { Dialog as DialogPrimitive } from "radix-ui"
6409
6389
 
6410
- import { cn } from "@olonjs/core/runtime"
6390
+ import { cn } from "@olonjs/core"
6411
6391
  import { Button } from "@/components/ui/button"
6412
6392
  import { XIcon } from "lucide-react"
6413
6393
 
@@ -6579,7 +6559,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/dropdown-menu.tsx"
6579
6559
  import * as React from "react"
6580
6560
  import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
6581
6561
 
6582
- import { cn } from "@olonjs/core/runtime"
6562
+ import { cn } from "@olonjs/core"
6583
6563
  import { CheckIcon, ChevronRightIcon } from "lucide-react"
6584
6564
 
6585
6565
  function DropdownMenu({
@@ -6854,7 +6834,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/hover-card.tsx"
6854
6834
  import * as React from "react"
6855
6835
  import { HoverCard as HoverCardPrimitive } from "radix-ui"
6856
6836
 
6857
- import { cn } from "@olonjs/core/runtime"
6837
+ import { cn } from "@olonjs/core"
6858
6838
 
6859
6839
  function HoverCard({
6860
6840
  ...props
@@ -6900,7 +6880,7 @@ END_OF_FILE_CONTENT
6900
6880
  echo "Creating src/components/ui/input.tsx..."
6901
6881
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/input.tsx"
6902
6882
  import * as React from 'react'
6903
- import { cn } from '@olonjs/core/runtime'
6883
+ import { cn } from '@olonjs/core'
6904
6884
 
6905
6885
  export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}
6906
6886
 
@@ -6931,7 +6911,7 @@ END_OF_FILE_CONTENT
6931
6911
  echo "Creating src/components/ui/label.tsx..."
6932
6912
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/label.tsx"
6933
6913
  import * as React from 'react'
6934
- import { cn } from '@olonjs/core/runtime'
6914
+ import { cn } from '@olonjs/core'
6935
6915
 
6936
6916
  const Label = React.forwardRef<
6937
6917
  HTMLLabelElement,
@@ -6955,7 +6935,7 @@ import * as React from "react"
6955
6935
  import { cva } from "class-variance-authority"
6956
6936
  import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui"
6957
6937
 
6958
- import { cn } from "@olonjs/core/runtime"
6938
+ import { cn } from "@olonjs/core"
6959
6939
  import { ChevronDownIcon } from "lucide-react"
6960
6940
 
6961
6941
  function NavigationMenu({
@@ -7124,7 +7104,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/progress.tsx"
7124
7104
  import * as React from "react"
7125
7105
  import { Progress as ProgressPrimitive } from "radix-ui"
7126
7106
 
7127
- import { cn } from "@olonjs/core/runtime"
7107
+ import { cn } from "@olonjs/core"
7128
7108
 
7129
7109
  function Progress({
7130
7110
  className,
@@ -7159,7 +7139,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/scroll-area.tsx"
7159
7139
  import * as React from "react"
7160
7140
  import { ScrollArea as ScrollAreaPrimitive } from "radix-ui"
7161
7141
 
7162
- import { cn } from "@olonjs/core/runtime"
7142
+ import { cn } from "@olonjs/core"
7163
7143
 
7164
7144
  function ScrollArea({
7165
7145
  className,
@@ -7218,7 +7198,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/select.tsx"
7218
7198
  import * as React from "react"
7219
7199
  import { Select as SelectPrimitive } from "radix-ui"
7220
7200
 
7221
- import { cn } from "@olonjs/core/runtime"
7201
+ import { cn } from "@olonjs/core"
7222
7202
  import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"
7223
7203
 
7224
7204
  function Select({
@@ -7604,7 +7584,7 @@ END_OF_FILE_CONTENT
7604
7584
  echo "Creating src/components/ui/separator.tsx..."
7605
7585
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/separator.tsx"
7606
7586
  import * as React from 'react'
7607
- import { cn } from '@olonjs/core/runtime'
7587
+ import { cn } from '@olonjs/core'
7608
7588
 
7609
7589
  const Separator = React.forwardRef<
7610
7590
  HTMLDivElement,
@@ -7633,7 +7613,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/sheet.tsx"
7633
7613
  import * as React from "react"
7634
7614
  import { Dialog as SheetPrimitive } from "radix-ui"
7635
7615
 
7636
- import { cn } from "@olonjs/core/runtime"
7616
+ import { cn } from "@olonjs/core"
7637
7617
  import { Button } from "@/components/ui/button"
7638
7618
  import { XIcon } from "lucide-react"
7639
7619
 
@@ -7781,7 +7761,7 @@ END_OF_FILE_CONTENT
7781
7761
  # SKIP: src/components/ui/sheet.tsx:Zone.Identifier is binary and cannot be embedded as text.
7782
7762
  echo "Creating src/components/ui/skeleton.tsx..."
7783
7763
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/skeleton.tsx"
7784
- import { cn } from '@olonjs/core/runtime';
7764
+ import { cn } from '@olonjs/core';
7785
7765
  import type { HTMLAttributes } from 'react';
7786
7766
 
7787
7767
  function Skeleton({
@@ -7805,7 +7785,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/switch.tsx"
7805
7785
  import * as React from "react"
7806
7786
  import { Switch as SwitchPrimitive } from "radix-ui"
7807
7787
 
7808
- import { cn } from "@olonjs/core/runtime"
7788
+ import { cn } from "@olonjs/core"
7809
7789
 
7810
7790
  function Switch({
7811
7791
  className,
@@ -7841,7 +7821,7 @@ echo "Creating src/components/ui/table.tsx..."
7841
7821
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/table.tsx"
7842
7822
  import * as React from "react"
7843
7823
 
7844
- import { cn } from "@olonjs/core/runtime"
7824
+ import { cn } from "@olonjs/core"
7845
7825
 
7846
7826
  function Table({ className, ...props }: React.ComponentProps<"table">) {
7847
7827
  return (
@@ -7965,7 +7945,7 @@ import * as React from "react"
7965
7945
  import { cva, type VariantProps } from "class-variance-authority"
7966
7946
  import { Tabs as TabsPrimitive } from "radix-ui"
7967
7947
 
7968
- import { cn } from "@olonjs/core/runtime"
7948
+ import { cn } from "@olonjs/core"
7969
7949
 
7970
7950
  function Tabs({
7971
7951
  className,
@@ -8057,7 +8037,7 @@ echo "Creating src/components/ui/textarea.tsx..."
8057
8037
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/textarea.tsx"
8058
8038
  import * as React from "react"
8059
8039
 
8060
- import { cn } from "@olonjs/core/runtime"
8040
+ import { cn } from "@olonjs/core"
8061
8041
 
8062
8042
  function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {
8063
8043
  return (
@@ -8086,7 +8066,7 @@ import * as React from "react"
8086
8066
  import { type VariantProps } from "class-variance-authority"
8087
8067
  import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui"
8088
8068
 
8089
- import { cn } from "@olonjs/core/runtime"
8069
+ import { cn } from "@olonjs/core"
8090
8070
  import { toggleVariants } from "@/components/ui/toggle"
8091
8071
 
8092
8072
  const ToggleGroupContext = React.createContext<
@@ -8181,7 +8161,7 @@ import * as React from "react"
8181
8161
  import { cva, type VariantProps } from "class-variance-authority"
8182
8162
  import { Toggle as TogglePrimitive } from "radix-ui"
8183
8163
 
8184
- import { cn } from "@olonjs/core/runtime"
8164
+ import { cn } from "@olonjs/core"
8185
8165
 
8186
8166
  const toggleVariants = cva(
8187
8167
  "group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -8233,7 +8213,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/tooltip.tsx"
8233
8213
  import * as React from "react"
8234
8214
  import { Tooltip as TooltipPrimitive } from "radix-ui"
8235
8215
 
8236
- import { cn } from "@olonjs/core/runtime"
8216
+ import { cn } from "@olonjs/core"
8237
8217
 
8238
8218
  function TooltipProvider({
8239
8219
  delayDuration = 0,
@@ -8936,7 +8916,7 @@ echo "Creating src/entry-ssg.tsx..."
8936
8916
  cat << 'END_OF_FILE_CONTENT' > "src/entry-ssg.tsx"
8937
8917
  import { renderToString } from 'react-dom/server';
8938
8918
  import { StaticRouter } from 'react-router-dom/server';
8939
- import { ConfigProvider, PageRenderer, StudioProvider, resolveRuntimeConfig } from '@olonjs/core/runtime';
8919
+ import { ConfigProvider, PageRenderer, StudioProvider, resolveRuntimeConfig } from '@olonjs/core';
8940
8920
  import type { JsonPagesConfig, PageConfig, SiteConfig, ThemeConfig } from '@/types';
8941
8921
  import { ThemeProvider } from '@/components/ThemeProvider';
8942
8922
  import { ComponentRegistry } from '@/lib/ComponentRegistry';
@@ -10144,7 +10124,7 @@ export const Icon: React.FC<IconProps> = ({ name, size = 20, className }) => {
10144
10124
  END_OF_FILE_CONTENT
10145
10125
  echo "Creating src/lib/addSectionConfig.ts..."
10146
10126
  cat << 'END_OF_FILE_CONTENT' > "src/lib/addSectionConfig.ts"
10147
- import type { AddSectionConfig } from '@olonjs/core/runtime';
10127
+ import type { AddSectionConfig } from '@olonjs/core';
10148
10128
 
10149
10129
  const addableSectionTypes = ['empty-tenant', 'form-demo'] as const;
10150
10130
 
@@ -10285,7 +10265,7 @@ export {
10285
10265
  BaseSectionSettingsSchema,
10286
10266
  CtaSchema,
10287
10267
  ImageSelectionSchema,
10288
- } from '@olonjs/core/runtime';
10268
+ } from '@olonjs/core';
10289
10269
 
10290
10270
  END_OF_FILE_CONTENT
10291
10271
  echo "Creating src/lib/useFormSubmit.ts..."
@@ -10380,7 +10360,7 @@ END_OF_FILE_CONTENT
10380
10360
  echo "Creating src/lib/useOlonForms.ts..."
10381
10361
  cat << 'END_OF_FILE_CONTENT' > "src/lib/useOlonForms.ts"
10382
10362
  import { useCallback, useEffect, useState } from 'react';
10383
- import type { FormState } from '@olonjs/core/runtime';
10363
+ import type { FormState } from '@olonjs/core';
10384
10364
 
10385
10365
  const API_BASE =
10386
10366
  (import.meta.env.VITE_OLONJS_CLOUD_URL as string | undefined) ??
@@ -10581,12 +10561,6 @@ export type SectionComponentPropsMap = {
10581
10561
  'form-demo': { data: FormDemoData; settings?: FormDemoSettings };
10582
10562
  };
10583
10563
 
10584
- // MTRP module augmentation. TypeScript treats `@olonjs/core` and
10585
- // `@olonjs/core/runtime` as separate module identifiers (different
10586
- // import specifiers). After ADR-0009 the tenant imports JsonPagesConfig
10587
- // from `/runtime` for the visitor path, so the section registries must
10588
- // be augmented for *both* identifiers, otherwise PageConfig.sections
10589
- // resolves to a generic FallbackSection on the runtime side.
10590
10564
  declare module '@olonjs/core' {
10591
10565
  export interface SectionDataRegistry {
10592
10566
  'empty-tenant': EmptyTenantData;
@@ -10598,26 +10572,7 @@ declare module '@olonjs/core' {
10598
10572
  }
10599
10573
  }
10600
10574
 
10601
- declare module '@olonjs/core/runtime' {
10602
- export interface SectionDataRegistry {
10603
- 'empty-tenant': EmptyTenantData;
10604
- 'form-demo': FormDemoData;
10605
- }
10606
- export interface SectionSettingsRegistry {
10607
- 'empty-tenant': EmptyTenantSettings;
10608
- 'form-demo': FormDemoSettings;
10609
- }
10610
- }
10611
-
10612
- // ADR-0009 D7: tenant types re-export from the runtime subpath, NOT the
10613
- // full @olonjs/core. This is a value re-export — even though every
10614
- // consumer in this codebase only does `import type`, Vite's static
10615
- // graph treats `export *` as a runtime dependency edge. Pointing it at
10616
- // '@olonjs/core' would pull the full Studio bundle (AdminSidebar,
10617
- // FormFactory, StudioStage, admin-skin) into the visitor main chunk.
10618
- // Pointing it at '@olonjs/core/runtime' anchors the graph to the
10619
- // runtime-only bundle (~28 KB gz) so the visitor entry stays clean.
10620
- export * from '@olonjs/core/runtime';
10575
+ export * from '@olonjs/core';
10621
10576
 
10622
10577
  END_OF_FILE_CONTENT
10623
10578
  echo "Creating src/vite-env.d.ts..."
@@ -1661,7 +1661,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1661
1661
  "dev": "vite",
1662
1662
  "dev:clean": "vite --force",
1663
1663
  "verify:webmcp": "node scripts/webmcp-feature-check.mjs",
1664
- "prebuild": "node scripts/sync-pages-to-public.mjs && node scripts/generate-llms-txt.mjs",
1664
+ "prebuild": "node scripts/sync-pages-to-public.mjs && node scripts/generate-llms-txt.mjs && node scripts/bake.mjs",
1665
1665
  "build": "tsc && vite build",
1666
1666
  "dist": "bash ./src2Code.sh --template alpha src .cursor vercel.json components.json index.html tsconfig.json package.json tsconfig.node.json vite.config.ts scripts ",
1667
1667
  "preview": "vite preview",
@@ -1674,7 +1674,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1674
1674
  "@tiptap/extension-link": "^2.11.5",
1675
1675
  "@tiptap/react": "^2.11.5",
1676
1676
  "@tiptap/starter-kit": "^2.11.5",
1677
- "@olonjs/core": "^1.1.3",
1677
+ "@olonjs/core": "^1.1.4",
1678
1678
  "class-variance-authority": "^0.7.1",
1679
1679
  "clsx": "^2.1.1",
1680
1680
  "lucide-react": "^0.474.0",
@@ -2582,20 +2582,18 @@ cat << 'END_OF_FILE_CONTENT' > "src/App.tsx"
2582
2582
  * Data from getHydratedData (file-backed or draft); assets from public/assets/images.
2583
2583
  * Supports Hybrid Persistence: Local Filesystem (Dev) or Cloud Bridge (Prod).
2584
2584
  */
2585
- import { useCallback, useEffect, useMemo, useRef, useState, Suspense, lazy } from 'react';
2586
- // Visitor path uses the runtime-only bundle (~28 KB gz), per ADR-0009 D7.
2587
- // The full @olonjs/core is loaded on demand only when the URL targets /admin.
2588
- import { OlonJSEngine } from '@olonjs/core/runtime';
2589
- import type { JsonPagesConfig, LibraryImageEntry, ProjectState } from '@olonjs/core/runtime';
2590
- import { normalizeBasePath, withBasePath } from '@olonjs/core/runtime';
2585
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2586
+ import { JsonPagesEngine } from '@olonjs/core';
2587
+ import type { JsonPagesConfig, LibraryImageEntry, ProjectState } from '@olonjs/core';
2588
+ import { normalizeBasePath, withBasePath } from '@olonjs/core';
2591
2589
  import { ComponentRegistry } from '@/lib/ComponentRegistry';
2592
2590
  import { SECTION_SCHEMAS, SECTION_SUBMISSION_SCHEMAS } from '@/lib/schemas';
2593
2591
  import { addSectionConfig } from '@/lib/addSectionConfig';
2594
2592
  import { getHydratedData } from '@/lib/draftStorage';
2595
2593
  import type { SiteConfig, ThemeConfig, MenuConfig, PageConfig } from '@/types';
2596
- import type { DeployPhase, StepId } from '@olonjs/core/runtime';
2597
- import { DEPLOY_STEPS } from '@olonjs/core/runtime';
2598
- import { startCloudSaveStream } from '@olonjs/core/runtime';
2594
+ import type { DeployPhase, StepId } from '@olonjs/core';
2595
+ import { DEPLOY_STEPS } from '@olonjs/core';
2596
+ import { startCloudSaveStream } from '@olonjs/core';
2599
2597
  import siteData from '@/data/config/site.json';
2600
2598
  import themeData from '@/data/config/theme.json';
2601
2599
  import menuData from '@/data/config/menu.json';
@@ -2605,23 +2603,9 @@ import { EmptyTenantView } from '@/components/empty-tenant';
2605
2603
  import { Skeleton } from '@/components/ui/skeleton';
2606
2604
  import { ThemeProvider } from '@/components/ThemeProvider';
2607
2605
  import { useOlonForms } from '@/lib/useOlonForms';
2608
- import { OlonFormsContext } from '@olonjs/core/runtime';
2606
+ import { OlonFormsContext } from '@olonjs/core';
2609
2607
  import { iconMap } from '@/lib/IconResolver';
2610
2608
 
2611
- /**
2612
- * Engine selector. Visitors get OlonJSEngine (~28 KB gz); /admin paths
2613
- * lazy-load the full JsonPagesEngine (~128 KB gz) which mounts the
2614
- * Studio editor surface. The check runs at module load time — once per
2615
- * page, before React mounts — so Vite statically splits the chunks.
2616
- * See ADR-0008 + ADR-0009 + docs/plans/core-studio-split.md (Task 3.1).
2617
- */
2618
- const isAdminPath =
2619
- typeof window !== 'undefined' && window.location.pathname.startsWith('/admin');
2620
-
2621
- const LazyJsonPagesEngine = lazy(() =>
2622
- import('@olonjs/core').then((m) => ({ default: m.JsonPagesEngine })),
2623
- );
2624
-
2625
2609
  import tenantCss from './index.css?inline';
2626
2610
 
2627
2611
  // Cloud Configuration (Injected by Vercel/Netlify Env Vars)
@@ -3683,12 +3667,8 @@ function App() {
3683
3667
  {shouldRenderEngine ? (
3684
3668
  isTenantEmpty ? (
3685
3669
  <EmptyTenantView />
3686
- ) : isAdminPath ? (
3687
- <Suspense fallback={null}>
3688
- <LazyJsonPagesEngine config={config} />
3689
- </Suspense>
3690
3670
  ) : (
3691
- <OlonJSEngine config={config} />
3671
+ <JsonPagesEngine config={config} />
3692
3672
  )
3693
3673
  ) : null}
3694
3674
  {isCloudMode && (contentMode === 'error' || contentFallback?.reasonCode === 'CLOUD_REFRESH_FAILED') ? (
@@ -3864,7 +3844,7 @@ END_OF_FILE_CONTENT
3864
3844
  echo "Creating src/components/empty-tenant/schema.ts..."
3865
3845
  cat << 'END_OF_FILE_CONTENT' > "src/components/empty-tenant/schema.ts"
3866
3846
  import { z } from 'zod';
3867
- import { BaseSectionData } from '@olonjs/core/runtime';
3847
+ import { BaseSectionData } from '@olonjs/core';
3868
3848
 
3869
3849
  export const EmptyTenantSchema = BaseSectionData.extend({
3870
3850
  title: z.string().optional().describe('ui:text'),
@@ -3887,7 +3867,7 @@ mkdir -p "src/components/form-demo"
3887
3867
  echo "Creating src/components/form-demo/View.tsx..."
3888
3868
  cat << 'END_OF_FILE_CONTENT' > "src/components/form-demo/View.tsx"
3889
3869
  import { Icon } from '@/lib/IconResolver';
3890
- import { useFormState } from '@olonjs/core/runtime';
3870
+ import { useFormState } from '@olonjs/core';
3891
3871
  import type { FormDemoData } from './types';
3892
3872
 
3893
3873
  type FormDemoViewProps = {
@@ -4051,7 +4031,7 @@ END_OF_FILE_CONTENT
4051
4031
  echo "Creating src/components/form-demo/schema.ts..."
4052
4032
  cat << 'END_OF_FILE_CONTENT' > "src/components/form-demo/schema.ts"
4053
4033
  import { z } from 'zod';
4054
- import { BaseSectionData, WithFormRecipient } from '@olonjs/core/runtime';
4034
+ import { BaseSectionData, WithFormRecipient } from '@olonjs/core';
4055
4035
 
4056
4036
  export const FormDemoSchema = BaseSectionData.merge(WithFormRecipient).extend({
4057
4037
  icon: z.string().optional().describe('ui:icon-picker'),
@@ -4090,7 +4070,7 @@ END_OF_FILE_CONTENT
4090
4070
  mkdir -p "src/components/save-drawer"
4091
4071
  echo "Creating src/components/save-drawer/DeployConnector.tsx..."
4092
4072
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DeployConnector.tsx"
4093
- import type { StepState } from '@olonjs/core/runtime';
4073
+ import type { StepState } from '@olonjs/core';
4094
4074
 
4095
4075
  interface DeployConnectorProps {
4096
4076
  fromState: StepState;
@@ -4136,7 +4116,7 @@ END_OF_FILE_CONTENT
4136
4116
  echo "Creating src/components/save-drawer/DeployNode.tsx..."
4137
4117
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DeployNode.tsx"
4138
4118
  import type { CSSProperties } from 'react';
4139
- import type { DeployStep, StepState } from '@olonjs/core/runtime';
4119
+ import type { DeployStep, StepState } from '@olonjs/core';
4140
4120
 
4141
4121
  interface DeployNodeProps {
4142
4122
  step: DeployStep;
@@ -4224,8 +4204,8 @@ echo "Creating src/components/save-drawer/DopaDrawer.tsx..."
4224
4204
  cat << 'END_OF_FILE_CONTENT' > "src/components/save-drawer/DopaDrawer.tsx"
4225
4205
  import { useEffect, useMemo, useState } from 'react';
4226
4206
  import { createPortal } from 'react-dom';
4227
- import type { StepId, StepState } from '@olonjs/core/runtime';
4228
- import { DEPLOY_STEPS } from '@olonjs/core/runtime';
4207
+ import type { StepId, StepState } from '@olonjs/core';
4208
+ import { DEPLOY_STEPS } from '@olonjs/core';
4229
4209
  import fontsCss from '@/fonts.css?inline';
4230
4210
  import saverStyleCss from './saverStyle.css?inline';
4231
4211
  import { DeployNode } from './DeployNode';
@@ -5432,7 +5412,7 @@ import {
5432
5412
  Code2, Quote, SquareCode,
5433
5413
  Link2, Unlink2, ImagePlus, Eraser,
5434
5414
  } from 'lucide-react';
5435
- import { STUDIO_EVENTS, useConfig, useStudio } from '@olonjs/core/runtime';
5415
+ import { STUDIO_EVENTS, useConfig, useStudio } from '@olonjs/core';
5436
5416
  import type { TiptapData, TiptapSettings } from './types';
5437
5417
 
5438
5418
  // ── UI primitives ─────────────────────────────────────────────────
@@ -5755,7 +5735,7 @@ END_OF_FILE_CONTENT
5755
5735
  echo "Creating src/components/tiptap/schema.ts..."
5756
5736
  cat << 'END_OF_FILE_CONTENT' > "src/components/tiptap/schema.ts"
5757
5737
  import { z } from 'zod';
5758
- import { BaseSectionData } from '@olonjs/core/runtime';
5738
+ import { BaseSectionData } from '@olonjs/core';
5759
5739
 
5760
5740
  export const TiptapSchema = BaseSectionData.extend({
5761
5741
  content: z.string().default('').describe('ui:editorial-markdown'),
@@ -5776,7 +5756,7 @@ END_OF_FILE_CONTENT
5776
5756
  mkdir -p "src/components/ui"
5777
5757
  echo "Creating src/components/ui/OlonMark.tsx..."
5778
5758
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/OlonMark.tsx"
5779
- import { cn } from '@olonjs/core/runtime'
5759
+ import { cn } from '@olonjs/core'
5780
5760
 
5781
5761
  interface OlonMarkProps {
5782
5762
  size?: number
@@ -5866,7 +5846,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/accordion.tsx"
5866
5846
  import * as React from "react"
5867
5847
  import { Accordion as AccordionPrimitive } from "radix-ui"
5868
5848
 
5869
- import { cn } from "@olonjs/core/runtime"
5849
+ import { cn } from "@olonjs/core"
5870
5850
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"
5871
5851
 
5872
5852
  function Accordion({
@@ -5970,7 +5950,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/avatar.tsx"
5970
5950
  import * as React from "react"
5971
5951
  import { Avatar as AvatarPrimitive } from "radix-ui"
5972
5952
 
5973
- import { cn } from "@olonjs/core/runtime"
5953
+ import { cn } from "@olonjs/core"
5974
5954
 
5975
5955
  function Avatar({
5976
5956
  className,
@@ -6085,7 +6065,7 @@ echo "Creating src/components/ui/badge.tsx..."
6085
6065
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/badge.tsx"
6086
6066
  import * as React from 'react'
6087
6067
  import { cva, type VariantProps } from 'class-variance-authority'
6088
- import { cn } from '@olonjs/core/runtime'
6068
+ import { cn } from '@olonjs/core'
6089
6069
 
6090
6070
  const badgeVariants = cva(
6091
6071
  'inline-flex items-center px-2.5 py-0.5 text-xs font-medium transition-colors',
@@ -6120,7 +6100,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/breadcrumb.tsx"
6120
6100
  import * as React from "react"
6121
6101
  import { Slot } from "radix-ui"
6122
6102
 
6123
- import { cn } from "@olonjs/core/runtime"
6103
+ import { cn } from "@olonjs/core"
6124
6104
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
6125
6105
 
6126
6106
  function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
@@ -6247,7 +6227,7 @@ echo "Creating src/components/ui/button.tsx..."
6247
6227
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/button.tsx"
6248
6228
  import * as React from 'react'
6249
6229
  import { cva, type VariantProps } from 'class-variance-authority'
6250
- import { cn } from '@olonjs/core/runtime'
6230
+ import { cn } from '@olonjs/core'
6251
6231
 
6252
6232
  const buttonVariants = cva(
6253
6233
  'inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40 shrink-0',
@@ -6308,7 +6288,7 @@ END_OF_FILE_CONTENT
6308
6288
  echo "Creating src/components/ui/card.tsx..."
6309
6289
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/card.tsx"
6310
6290
  import * as React from 'react'
6311
- import { cn } from '@olonjs/core/runtime'
6291
+ import { cn } from '@olonjs/core'
6312
6292
 
6313
6293
  const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
6314
6294
  ({ className, ...props }, ref) => (
@@ -6367,7 +6347,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/checkbox.tsx"
6367
6347
  import * as React from "react"
6368
6348
  import { Checkbox as CheckboxPrimitive } from "radix-ui"
6369
6349
 
6370
- import { cn } from "@olonjs/core/runtime"
6350
+ import { cn } from "@olonjs/core"
6371
6351
  import { CheckIcon } from "lucide-react"
6372
6352
 
6373
6353
  function Checkbox({
@@ -6407,7 +6387,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/dialog.tsx"
6407
6387
  import * as React from "react"
6408
6388
  import { Dialog as DialogPrimitive } from "radix-ui"
6409
6389
 
6410
- import { cn } from "@olonjs/core/runtime"
6390
+ import { cn } from "@olonjs/core"
6411
6391
  import { Button } from "@/components/ui/button"
6412
6392
  import { XIcon } from "lucide-react"
6413
6393
 
@@ -6579,7 +6559,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/dropdown-menu.tsx"
6579
6559
  import * as React from "react"
6580
6560
  import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
6581
6561
 
6582
- import { cn } from "@olonjs/core/runtime"
6562
+ import { cn } from "@olonjs/core"
6583
6563
  import { CheckIcon, ChevronRightIcon } from "lucide-react"
6584
6564
 
6585
6565
  function DropdownMenu({
@@ -6854,7 +6834,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/hover-card.tsx"
6854
6834
  import * as React from "react"
6855
6835
  import { HoverCard as HoverCardPrimitive } from "radix-ui"
6856
6836
 
6857
- import { cn } from "@olonjs/core/runtime"
6837
+ import { cn } from "@olonjs/core"
6858
6838
 
6859
6839
  function HoverCard({
6860
6840
  ...props
@@ -6900,7 +6880,7 @@ END_OF_FILE_CONTENT
6900
6880
  echo "Creating src/components/ui/input.tsx..."
6901
6881
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/input.tsx"
6902
6882
  import * as React from 'react'
6903
- import { cn } from '@olonjs/core/runtime'
6883
+ import { cn } from '@olonjs/core'
6904
6884
 
6905
6885
  export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}
6906
6886
 
@@ -6931,7 +6911,7 @@ END_OF_FILE_CONTENT
6931
6911
  echo "Creating src/components/ui/label.tsx..."
6932
6912
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/label.tsx"
6933
6913
  import * as React from 'react'
6934
- import { cn } from '@olonjs/core/runtime'
6914
+ import { cn } from '@olonjs/core'
6935
6915
 
6936
6916
  const Label = React.forwardRef<
6937
6917
  HTMLLabelElement,
@@ -6955,7 +6935,7 @@ import * as React from "react"
6955
6935
  import { cva } from "class-variance-authority"
6956
6936
  import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui"
6957
6937
 
6958
- import { cn } from "@olonjs/core/runtime"
6938
+ import { cn } from "@olonjs/core"
6959
6939
  import { ChevronDownIcon } from "lucide-react"
6960
6940
 
6961
6941
  function NavigationMenu({
@@ -7124,7 +7104,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/progress.tsx"
7124
7104
  import * as React from "react"
7125
7105
  import { Progress as ProgressPrimitive } from "radix-ui"
7126
7106
 
7127
- import { cn } from "@olonjs/core/runtime"
7107
+ import { cn } from "@olonjs/core"
7128
7108
 
7129
7109
  function Progress({
7130
7110
  className,
@@ -7159,7 +7139,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/scroll-area.tsx"
7159
7139
  import * as React from "react"
7160
7140
  import { ScrollArea as ScrollAreaPrimitive } from "radix-ui"
7161
7141
 
7162
- import { cn } from "@olonjs/core/runtime"
7142
+ import { cn } from "@olonjs/core"
7163
7143
 
7164
7144
  function ScrollArea({
7165
7145
  className,
@@ -7218,7 +7198,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/select.tsx"
7218
7198
  import * as React from "react"
7219
7199
  import { Select as SelectPrimitive } from "radix-ui"
7220
7200
 
7221
- import { cn } from "@olonjs/core/runtime"
7201
+ import { cn } from "@olonjs/core"
7222
7202
  import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"
7223
7203
 
7224
7204
  function Select({
@@ -7604,7 +7584,7 @@ END_OF_FILE_CONTENT
7604
7584
  echo "Creating src/components/ui/separator.tsx..."
7605
7585
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/separator.tsx"
7606
7586
  import * as React from 'react'
7607
- import { cn } from '@olonjs/core/runtime'
7587
+ import { cn } from '@olonjs/core'
7608
7588
 
7609
7589
  const Separator = React.forwardRef<
7610
7590
  HTMLDivElement,
@@ -7633,7 +7613,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/sheet.tsx"
7633
7613
  import * as React from "react"
7634
7614
  import { Dialog as SheetPrimitive } from "radix-ui"
7635
7615
 
7636
- import { cn } from "@olonjs/core/runtime"
7616
+ import { cn } from "@olonjs/core"
7637
7617
  import { Button } from "@/components/ui/button"
7638
7618
  import { XIcon } from "lucide-react"
7639
7619
 
@@ -7781,7 +7761,7 @@ END_OF_FILE_CONTENT
7781
7761
  # SKIP: src/components/ui/sheet.tsx:Zone.Identifier is binary and cannot be embedded as text.
7782
7762
  echo "Creating src/components/ui/skeleton.tsx..."
7783
7763
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/skeleton.tsx"
7784
- import { cn } from '@olonjs/core/runtime';
7764
+ import { cn } from '@olonjs/core';
7785
7765
  import type { HTMLAttributes } from 'react';
7786
7766
 
7787
7767
  function Skeleton({
@@ -7805,7 +7785,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/switch.tsx"
7805
7785
  import * as React from "react"
7806
7786
  import { Switch as SwitchPrimitive } from "radix-ui"
7807
7787
 
7808
- import { cn } from "@olonjs/core/runtime"
7788
+ import { cn } from "@olonjs/core"
7809
7789
 
7810
7790
  function Switch({
7811
7791
  className,
@@ -7841,7 +7821,7 @@ echo "Creating src/components/ui/table.tsx..."
7841
7821
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/table.tsx"
7842
7822
  import * as React from "react"
7843
7823
 
7844
- import { cn } from "@olonjs/core/runtime"
7824
+ import { cn } from "@olonjs/core"
7845
7825
 
7846
7826
  function Table({ className, ...props }: React.ComponentProps<"table">) {
7847
7827
  return (
@@ -7965,7 +7945,7 @@ import * as React from "react"
7965
7945
  import { cva, type VariantProps } from "class-variance-authority"
7966
7946
  import { Tabs as TabsPrimitive } from "radix-ui"
7967
7947
 
7968
- import { cn } from "@olonjs/core/runtime"
7948
+ import { cn } from "@olonjs/core"
7969
7949
 
7970
7950
  function Tabs({
7971
7951
  className,
@@ -8057,7 +8037,7 @@ echo "Creating src/components/ui/textarea.tsx..."
8057
8037
  cat << 'END_OF_FILE_CONTENT' > "src/components/ui/textarea.tsx"
8058
8038
  import * as React from "react"
8059
8039
 
8060
- import { cn } from "@olonjs/core/runtime"
8040
+ import { cn } from "@olonjs/core"
8061
8041
 
8062
8042
  function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {
8063
8043
  return (
@@ -8086,7 +8066,7 @@ import * as React from "react"
8086
8066
  import { type VariantProps } from "class-variance-authority"
8087
8067
  import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui"
8088
8068
 
8089
- import { cn } from "@olonjs/core/runtime"
8069
+ import { cn } from "@olonjs/core"
8090
8070
  import { toggleVariants } from "@/components/ui/toggle"
8091
8071
 
8092
8072
  const ToggleGroupContext = React.createContext<
@@ -8181,7 +8161,7 @@ import * as React from "react"
8181
8161
  import { cva, type VariantProps } from "class-variance-authority"
8182
8162
  import { Toggle as TogglePrimitive } from "radix-ui"
8183
8163
 
8184
- import { cn } from "@olonjs/core/runtime"
8164
+ import { cn } from "@olonjs/core"
8185
8165
 
8186
8166
  const toggleVariants = cva(
8187
8167
  "group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -8233,7 +8213,7 @@ cat << 'END_OF_FILE_CONTENT' > "src/components/ui/tooltip.tsx"
8233
8213
  import * as React from "react"
8234
8214
  import { Tooltip as TooltipPrimitive } from "radix-ui"
8235
8215
 
8236
- import { cn } from "@olonjs/core/runtime"
8216
+ import { cn } from "@olonjs/core"
8237
8217
 
8238
8218
  function TooltipProvider({
8239
8219
  delayDuration = 0,
@@ -8936,7 +8916,7 @@ echo "Creating src/entry-ssg.tsx..."
8936
8916
  cat << 'END_OF_FILE_CONTENT' > "src/entry-ssg.tsx"
8937
8917
  import { renderToString } from 'react-dom/server';
8938
8918
  import { StaticRouter } from 'react-router-dom/server';
8939
- import { ConfigProvider, PageRenderer, StudioProvider, resolveRuntimeConfig } from '@olonjs/core/runtime';
8919
+ import { ConfigProvider, PageRenderer, StudioProvider, resolveRuntimeConfig } from '@olonjs/core';
8940
8920
  import type { JsonPagesConfig, PageConfig, SiteConfig, ThemeConfig } from '@/types';
8941
8921
  import { ThemeProvider } from '@/components/ThemeProvider';
8942
8922
  import { ComponentRegistry } from '@/lib/ComponentRegistry';
@@ -10144,7 +10124,7 @@ export const Icon: React.FC<IconProps> = ({ name, size = 20, className }) => {
10144
10124
  END_OF_FILE_CONTENT
10145
10125
  echo "Creating src/lib/addSectionConfig.ts..."
10146
10126
  cat << 'END_OF_FILE_CONTENT' > "src/lib/addSectionConfig.ts"
10147
- import type { AddSectionConfig } from '@olonjs/core/runtime';
10127
+ import type { AddSectionConfig } from '@olonjs/core';
10148
10128
 
10149
10129
  const addableSectionTypes = ['empty-tenant', 'form-demo'] as const;
10150
10130
 
@@ -10285,7 +10265,7 @@ export {
10285
10265
  BaseSectionSettingsSchema,
10286
10266
  CtaSchema,
10287
10267
  ImageSelectionSchema,
10288
- } from '@olonjs/core/runtime';
10268
+ } from '@olonjs/core';
10289
10269
 
10290
10270
  END_OF_FILE_CONTENT
10291
10271
  echo "Creating src/lib/useFormSubmit.ts..."
@@ -10380,7 +10360,7 @@ END_OF_FILE_CONTENT
10380
10360
  echo "Creating src/lib/useOlonForms.ts..."
10381
10361
  cat << 'END_OF_FILE_CONTENT' > "src/lib/useOlonForms.ts"
10382
10362
  import { useCallback, useEffect, useState } from 'react';
10383
- import type { FormState } from '@olonjs/core/runtime';
10363
+ import type { FormState } from '@olonjs/core';
10384
10364
 
10385
10365
  const API_BASE =
10386
10366
  (import.meta.env.VITE_OLONJS_CLOUD_URL as string | undefined) ??
@@ -10581,12 +10561,6 @@ export type SectionComponentPropsMap = {
10581
10561
  'form-demo': { data: FormDemoData; settings?: FormDemoSettings };
10582
10562
  };
10583
10563
 
10584
- // MTRP module augmentation. TypeScript treats `@olonjs/core` and
10585
- // `@olonjs/core/runtime` as separate module identifiers (different
10586
- // import specifiers). After ADR-0009 the tenant imports JsonPagesConfig
10587
- // from `/runtime` for the visitor path, so the section registries must
10588
- // be augmented for *both* identifiers, otherwise PageConfig.sections
10589
- // resolves to a generic FallbackSection on the runtime side.
10590
10564
  declare module '@olonjs/core' {
10591
10565
  export interface SectionDataRegistry {
10592
10566
  'empty-tenant': EmptyTenantData;
@@ -10598,26 +10572,7 @@ declare module '@olonjs/core' {
10598
10572
  }
10599
10573
  }
10600
10574
 
10601
- declare module '@olonjs/core/runtime' {
10602
- export interface SectionDataRegistry {
10603
- 'empty-tenant': EmptyTenantData;
10604
- 'form-demo': FormDemoData;
10605
- }
10606
- export interface SectionSettingsRegistry {
10607
- 'empty-tenant': EmptyTenantSettings;
10608
- 'form-demo': FormDemoSettings;
10609
- }
10610
- }
10611
-
10612
- // ADR-0009 D7: tenant types re-export from the runtime subpath, NOT the
10613
- // full @olonjs/core. This is a value re-export — even though every
10614
- // consumer in this codebase only does `import type`, Vite's static
10615
- // graph treats `export *` as a runtime dependency edge. Pointing it at
10616
- // '@olonjs/core' would pull the full Studio bundle (AdminSidebar,
10617
- // FormFactory, StudioStage, admin-skin) into the visitor main chunk.
10618
- // Pointing it at '@olonjs/core/runtime' anchors the graph to the
10619
- // runtime-only bundle (~28 KB gz) so the visitor entry stays clean.
10620
- export * from '@olonjs/core/runtime';
10575
+ export * from '@olonjs/core';
10621
10576
 
10622
10577
  END_OF_FILE_CONTENT
10623
10578
  echo "Creating src/vite-env.d.ts..."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olonjs/cli",
3
- "version": "3.0.139",
3
+ "version": "3.0.140",
4
4
  "description": "The Sovereign CLI Engine for OlonJS.",
5
5
  "type": "module",
6
6
  "bin": {