@olonjs/cli 3.0.123 → 3.0.124

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.
@@ -1644,7 +1644,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1644
1644
  "@tiptap/extension-link": "^2.11.5",
1645
1645
  "@tiptap/react": "^2.11.5",
1646
1646
  "@tiptap/starter-kit": "^2.11.5",
1647
- "@olonjs/core": "^1.0.112",
1647
+ "@olonjs/core": "^1.0.113",
1648
1648
  "class-variance-authority": "^0.7.1",
1649
1649
  "clsx": "^2.1.1",
1650
1650
  "lucide-react": "^0.474.0",
@@ -5315,7 +5315,7 @@ interface FooterViewProps {
5315
5315
 
5316
5316
  export function Footer({ data, settings }: FooterViewProps) {
5317
5317
  const showLogo = settings?.showLogo ?? true;
5318
- const links = data.links ?? [];
5318
+ const links = data.menu ?? [];
5319
5319
 
5320
5320
  return (
5321
5321
  <footer className="border-t border-border px-6 py-8">
@@ -5374,7 +5374,7 @@ import { z } from 'zod';
5374
5374
  export const FooterSchema = z.object({
5375
5375
  brandText: z.string().describe('ui:text'),
5376
5376
  copyright: z.string().describe('ui:text'),
5377
- links: z.array(z.object({
5377
+ menu: z.array(z.object({
5378
5378
  label: z.string().describe('ui:text'),
5379
5379
  href: z.string().describe('ui:text'),
5380
5380
  })).optional().describe('ui:list'),
@@ -5564,7 +5564,7 @@ export function Header({ data, settings, menu }: HeaderViewProps) {
5564
5564
  const isSticky = settings?.sticky ?? true;
5565
5565
  const navRef = useRef<HTMLElement>(null);
5566
5566
 
5567
- const linksField = data.links as unknown;
5567
+ const linksField = data.menu as unknown;
5568
5568
  const rawLinks = Array.isArray(linksField) ? linksField : [];
5569
5569
  const menuItems = Array.isArray(menu) ? (menu as unknown[]) : [];
5570
5570
  // If tenant explicitly uses a JSON ref for links, resolve from menu config.
@@ -6007,7 +6007,7 @@ export const HeaderSchema = z.object({
6007
6007
  signinHref: z.string().optional().describe('ui:text'),
6008
6008
  ctaHref: z.string().optional().describe('ui:text'),
6009
6009
  ctaLabel: z.string().optional().describe('ui:text'),
6010
- links: z.array(z.object({
6010
+ menu: z.array(z.object({
6011
6011
  label: z.string().describe('ui:text'),
6012
6012
  href: z.string().describe('ui:text'),
6013
6013
  isCta: z.boolean().default(false).describe('ui:checkbox'),
@@ -10694,15 +10694,14 @@ echo "Creating src/data/config/menu.json..."
10694
10694
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
10695
10695
  {
10696
10696
  "main": [
10697
- {
10698
- "label": "Why",
10699
- "href": "#Why"
10700
-
10701
- },
10702
10697
  {
10703
10698
  "label": "Architecture",
10704
10699
  "href": "#Architecture"
10705
10700
  },
10701
+ {
10702
+ "label": "Whys",
10703
+ "href": "#Why"
10704
+ },
10706
10705
  {
10707
10706
  "label": "Example",
10708
10707
  "href": "#Example"
@@ -10711,14 +10710,59 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
10711
10710
  "label": "Get started",
10712
10711
  "href": "#Getstarted"
10713
10712
  },
10714
- {
10713
+ {
10715
10714
  "label": "GitHub",
10716
10715
  "href": "https://github.com/olonjs/core"
10717
10716
  }
10717
+ ],
10718
+ "footer": [
10719
+ {
10720
+ "label": "GitHubs",
10721
+ "href": "https://github.com/olonjs/core"
10722
+ }
10723
+ ],
10724
+ "nested": [
10725
+ {
10726
+ "label": "Why",
10727
+ "href": "/why",
10728
+ "children": [
10729
+ {
10730
+ "label": "Overview",
10731
+ "href": "/platform/overview"
10732
+ },
10733
+ {
10734
+ "label": "Architecture",
10735
+ "href": "/platform/architecture"
10736
+ },
10737
+ {
10738
+ "label": "Security",
10739
+ "href": "/platform/security"
10740
+ },
10741
+ {
10742
+ "label": "Integrations",
10743
+ "href": "/platform/integrations"
10744
+ },
10745
+ {
10746
+ "label": "Roadmap",
10747
+ "href": "/platform/roadmap"
10748
+ }
10749
+ ]
10750
+ },
10751
+ {
10752
+ "label": "Solutions",
10753
+ "href": "/solutions"
10754
+ },
10755
+ {
10756
+ "label": "Pricing",
10757
+ "href": "/pricing"
10758
+ },
10759
+ {
10760
+ "label": "Resources",
10761
+ "href": "/resources"
10762
+ }
10718
10763
  ]
10719
10764
  }
10720
10765
  END_OF_FILE_CONTENT
10721
- # SKIP: src/data/config/menu.json:Zone.Identifier is binary and cannot be embedded as text.
10722
10766
  echo "Creating src/data/config/menu_example_for_schema.json..."
10723
10767
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu_example_for_schema.json"
10724
10768
  {
@@ -10767,51 +10811,15 @@ END_OF_FILE_CONTENT
10767
10811
  echo "Creating src/data/config/site.json..."
10768
10812
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
10769
10813
  {
10770
- "identity": {
10771
- "title": "OlonJS",
10772
- "logoUrl": "/brand/mark/olon-mark-dark.svg"
10773
- },
10774
- "pages": [
10775
- {
10776
- "slug": "home",
10777
- "label": "Home"
10778
- },
10779
- {
10780
- "slug": "design-system",
10781
- "label": "Design System"
10782
- }
10783
- ],
10784
10814
  "header": {
10785
10815
  "id": "global-header",
10786
10816
  "type": "header",
10787
10817
  "data": {
10788
10818
  "logoText": "Olon",
10789
10819
  "badge": "JS",
10790
- "links": [
10791
- {
10792
- "label": "Why",
10793
- "href": "#Why"
10794
- },
10795
- {
10796
- "label": "Architecture",
10797
- "href": "#Architecture"
10798
- },
10799
- {
10800
- "label": "Example",
10801
- "href": "#Example"
10802
- },
10803
- {
10804
- "label": "Get started",
10805
- "href": "#Getstarted"
10806
- },
10807
- {
10808
- "label": "GitHub",
10809
- "href": "https://github.com/olonjs/core"
10810
- }
10811
- ],
10812
- "ctaLabel": "",
10813
- "ctaHref": "",
10814
- "signinHref": ""
10820
+ "menu": {
10821
+ "$ref": "../config/menu.json#/main"
10822
+ }
10815
10823
  }
10816
10824
  },
10817
10825
  "footer": {
@@ -10820,21 +10828,17 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
10820
10828
  "data": {
10821
10829
  "brandText": "OlonJS",
10822
10830
  "copyright": "© 2026 OlonJS · v1.5 · Guido Serio",
10823
- "links": [
10824
- {
10825
- "label": "GitHub",
10826
- "href": "https://github.com/olonjs/core"
10827
- }
10828
- ],
10829
- "designSystemHref": ""
10830
- },
10831
- "settings": {
10832
- "showLogo": true
10831
+ "menu": {
10832
+ "$ref": "../config/menu.json#/footer"
10833
+ }
10833
10834
  }
10834
- }
10835
+ },
10836
+ "identity": {
10837
+ "title": "Site"
10838
+ },
10839
+ "pages": []
10835
10840
  }
10836
10841
  END_OF_FILE_CONTENT
10837
- # SKIP: src/data/config/site.json:Zone.Identifier is binary and cannot be embedded as text.
10838
10842
  echo "Creating src/data/config/theme.json..."
10839
10843
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
10840
10844
  {
@@ -11002,7 +11006,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
11002
11006
  }
11003
11007
  }
11004
11008
  END_OF_FILE_CONTENT
11005
- # SKIP: src/data/config/theme.json:Zone.Identifier is binary and cannot be embedded as text.
11006
11009
  mkdir -p "src/data/pages"
11007
11010
  echo "Creating src/data/pages/design-system.json..."
11008
11011
  cat << 'END_OF_FILE_CONTENT' > "src/data/pages/design-system.json"
@@ -11063,9 +11066,9 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/home.json"
11063
11066
  "data": {
11064
11067
  "id": "hero-main",
11065
11068
  "eyebrow": "CONTRACT LAYER · V1.5 · OPEN SOURCE",
11066
- "headline": "Contract Layer",
11067
- "subline": "for the agentic web.",
11068
- "body": "AI agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
11069
+ "headline": "Build Websites ",
11070
+ "subline": "AI Agents Can Operate",
11071
+ "body": "Aaa agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
11069
11072
  "primaryCta": {
11070
11073
  "label": "Get started",
11071
11074
  "href": "#getstarted"
@@ -13927,6 +13930,7 @@ export default defineConfig({
13927
13930
  if (!fs.existsSync(DATA_CONFIG_DIR)) fs.mkdirSync(DATA_CONFIG_DIR, { recursive: true });
13928
13931
  if (!fs.existsSync(DATA_PAGES_DIR)) fs.mkdirSync(DATA_PAGES_DIR, { recursive: true });
13929
13932
  if (projectState.site != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'site.json'), JSON.stringify(projectState.site, null, 2), 'utf8');
13933
+ if (projectState.menu != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'menu.json'), JSON.stringify(projectState.menu, null, 2), 'utf8');
13930
13934
  if (projectState.theme != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'theme.json'), JSON.stringify(projectState.theme, null, 2), 'utf8');
13931
13935
  if (projectState.page != null) {
13932
13936
  const safeSlug = (slug.replace(/[^a-zA-Z0-9-_]/g, '_') || 'page');
@@ -13982,5 +13986,4 @@ export default defineConfig({
13982
13986
 
13983
13987
 
13984
13988
 
13985
-
13986
13989
  END_OF_FILE_CONTENT
@@ -596,7 +596,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
596
596
  "@tiptap/extension-link": "^2.11.5",
597
597
  "@tiptap/react": "^2.11.5",
598
598
  "@tiptap/starter-kit": "^2.11.5",
599
- "@olonjs/core": "^1.0.112",
599
+ "@olonjs/core": "^1.0.113",
600
600
  "clsx": "^2.1.1",
601
601
  "lucide-react": "^0.474.0",
602
602
  "react": "^19.0.0",
@@ -1644,7 +1644,7 @@ cat << 'END_OF_FILE_CONTENT' > "package.json"
1644
1644
  "@tiptap/extension-link": "^2.11.5",
1645
1645
  "@tiptap/react": "^2.11.5",
1646
1646
  "@tiptap/starter-kit": "^2.11.5",
1647
- "@olonjs/core": "^1.0.112",
1647
+ "@olonjs/core": "^1.0.113",
1648
1648
  "class-variance-authority": "^0.7.1",
1649
1649
  "clsx": "^2.1.1",
1650
1650
  "lucide-react": "^0.474.0",
@@ -5315,7 +5315,7 @@ interface FooterViewProps {
5315
5315
 
5316
5316
  export function Footer({ data, settings }: FooterViewProps) {
5317
5317
  const showLogo = settings?.showLogo ?? true;
5318
- const links = data.links ?? [];
5318
+ const links = data.menu ?? [];
5319
5319
 
5320
5320
  return (
5321
5321
  <footer className="border-t border-border px-6 py-8">
@@ -5374,7 +5374,7 @@ import { z } from 'zod';
5374
5374
  export const FooterSchema = z.object({
5375
5375
  brandText: z.string().describe('ui:text'),
5376
5376
  copyright: z.string().describe('ui:text'),
5377
- links: z.array(z.object({
5377
+ menu: z.array(z.object({
5378
5378
  label: z.string().describe('ui:text'),
5379
5379
  href: z.string().describe('ui:text'),
5380
5380
  })).optional().describe('ui:list'),
@@ -5564,7 +5564,7 @@ export function Header({ data, settings, menu }: HeaderViewProps) {
5564
5564
  const isSticky = settings?.sticky ?? true;
5565
5565
  const navRef = useRef<HTMLElement>(null);
5566
5566
 
5567
- const linksField = data.links as unknown;
5567
+ const linksField = data.menu as unknown;
5568
5568
  const rawLinks = Array.isArray(linksField) ? linksField : [];
5569
5569
  const menuItems = Array.isArray(menu) ? (menu as unknown[]) : [];
5570
5570
  // If tenant explicitly uses a JSON ref for links, resolve from menu config.
@@ -6007,7 +6007,7 @@ export const HeaderSchema = z.object({
6007
6007
  signinHref: z.string().optional().describe('ui:text'),
6008
6008
  ctaHref: z.string().optional().describe('ui:text'),
6009
6009
  ctaLabel: z.string().optional().describe('ui:text'),
6010
- links: z.array(z.object({
6010
+ menu: z.array(z.object({
6011
6011
  label: z.string().describe('ui:text'),
6012
6012
  href: z.string().describe('ui:text'),
6013
6013
  isCta: z.boolean().default(false).describe('ui:checkbox'),
@@ -10694,15 +10694,14 @@ echo "Creating src/data/config/menu.json..."
10694
10694
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
10695
10695
  {
10696
10696
  "main": [
10697
- {
10698
- "label": "Why",
10699
- "href": "#Why"
10700
-
10701
- },
10702
10697
  {
10703
10698
  "label": "Architecture",
10704
10699
  "href": "#Architecture"
10705
10700
  },
10701
+ {
10702
+ "label": "Whys",
10703
+ "href": "#Why"
10704
+ },
10706
10705
  {
10707
10706
  "label": "Example",
10708
10707
  "href": "#Example"
@@ -10711,14 +10710,59 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu.json"
10711
10710
  "label": "Get started",
10712
10711
  "href": "#Getstarted"
10713
10712
  },
10714
- {
10713
+ {
10715
10714
  "label": "GitHub",
10716
10715
  "href": "https://github.com/olonjs/core"
10717
10716
  }
10717
+ ],
10718
+ "footer": [
10719
+ {
10720
+ "label": "GitHubs",
10721
+ "href": "https://github.com/olonjs/core"
10722
+ }
10723
+ ],
10724
+ "nested": [
10725
+ {
10726
+ "label": "Why",
10727
+ "href": "/why",
10728
+ "children": [
10729
+ {
10730
+ "label": "Overview",
10731
+ "href": "/platform/overview"
10732
+ },
10733
+ {
10734
+ "label": "Architecture",
10735
+ "href": "/platform/architecture"
10736
+ },
10737
+ {
10738
+ "label": "Security",
10739
+ "href": "/platform/security"
10740
+ },
10741
+ {
10742
+ "label": "Integrations",
10743
+ "href": "/platform/integrations"
10744
+ },
10745
+ {
10746
+ "label": "Roadmap",
10747
+ "href": "/platform/roadmap"
10748
+ }
10749
+ ]
10750
+ },
10751
+ {
10752
+ "label": "Solutions",
10753
+ "href": "/solutions"
10754
+ },
10755
+ {
10756
+ "label": "Pricing",
10757
+ "href": "/pricing"
10758
+ },
10759
+ {
10760
+ "label": "Resources",
10761
+ "href": "/resources"
10762
+ }
10718
10763
  ]
10719
10764
  }
10720
10765
  END_OF_FILE_CONTENT
10721
- # SKIP: src/data/config/menu.json:Zone.Identifier is binary and cannot be embedded as text.
10722
10766
  echo "Creating src/data/config/menu_example_for_schema.json..."
10723
10767
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/menu_example_for_schema.json"
10724
10768
  {
@@ -10767,51 +10811,15 @@ END_OF_FILE_CONTENT
10767
10811
  echo "Creating src/data/config/site.json..."
10768
10812
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
10769
10813
  {
10770
- "identity": {
10771
- "title": "OlonJS",
10772
- "logoUrl": "/brand/mark/olon-mark-dark.svg"
10773
- },
10774
- "pages": [
10775
- {
10776
- "slug": "home",
10777
- "label": "Home"
10778
- },
10779
- {
10780
- "slug": "design-system",
10781
- "label": "Design System"
10782
- }
10783
- ],
10784
10814
  "header": {
10785
10815
  "id": "global-header",
10786
10816
  "type": "header",
10787
10817
  "data": {
10788
10818
  "logoText": "Olon",
10789
10819
  "badge": "JS",
10790
- "links": [
10791
- {
10792
- "label": "Why",
10793
- "href": "#Why"
10794
- },
10795
- {
10796
- "label": "Architecture",
10797
- "href": "#Architecture"
10798
- },
10799
- {
10800
- "label": "Example",
10801
- "href": "#Example"
10802
- },
10803
- {
10804
- "label": "Get started",
10805
- "href": "#Getstarted"
10806
- },
10807
- {
10808
- "label": "GitHub",
10809
- "href": "https://github.com/olonjs/core"
10810
- }
10811
- ],
10812
- "ctaLabel": "",
10813
- "ctaHref": "",
10814
- "signinHref": ""
10820
+ "menu": {
10821
+ "$ref": "../config/menu.json#/main"
10822
+ }
10815
10823
  }
10816
10824
  },
10817
10825
  "footer": {
@@ -10820,21 +10828,17 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/site.json"
10820
10828
  "data": {
10821
10829
  "brandText": "OlonJS",
10822
10830
  "copyright": "© 2026 OlonJS · v1.5 · Guido Serio",
10823
- "links": [
10824
- {
10825
- "label": "GitHub",
10826
- "href": "https://github.com/olonjs/core"
10827
- }
10828
- ],
10829
- "designSystemHref": ""
10830
- },
10831
- "settings": {
10832
- "showLogo": true
10831
+ "menu": {
10832
+ "$ref": "../config/menu.json#/footer"
10833
+ }
10833
10834
  }
10834
- }
10835
+ },
10836
+ "identity": {
10837
+ "title": "Site"
10838
+ },
10839
+ "pages": []
10835
10840
  }
10836
10841
  END_OF_FILE_CONTENT
10837
- # SKIP: src/data/config/site.json:Zone.Identifier is binary and cannot be embedded as text.
10838
10842
  echo "Creating src/data/config/theme.json..."
10839
10843
  cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
10840
10844
  {
@@ -11002,7 +11006,6 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/config/theme.json"
11002
11006
  }
11003
11007
  }
11004
11008
  END_OF_FILE_CONTENT
11005
- # SKIP: src/data/config/theme.json:Zone.Identifier is binary and cannot be embedded as text.
11006
11009
  mkdir -p "src/data/pages"
11007
11010
  echo "Creating src/data/pages/design-system.json..."
11008
11011
  cat << 'END_OF_FILE_CONTENT' > "src/data/pages/design-system.json"
@@ -11063,9 +11066,9 @@ cat << 'END_OF_FILE_CONTENT' > "src/data/pages/home.json"
11063
11066
  "data": {
11064
11067
  "id": "hero-main",
11065
11068
  "eyebrow": "CONTRACT LAYER · V1.5 · OPEN SOURCE",
11066
- "headline": "Contract Layer",
11067
- "subline": "for the agentic web.",
11068
- "body": "AI agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
11069
+ "headline": "Build Websites ",
11070
+ "subline": "AI Agents Can Operate",
11071
+ "body": "Aaa agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.",
11069
11072
  "primaryCta": {
11070
11073
  "label": "Get started",
11071
11074
  "href": "#getstarted"
@@ -13927,6 +13930,7 @@ export default defineConfig({
13927
13930
  if (!fs.existsSync(DATA_CONFIG_DIR)) fs.mkdirSync(DATA_CONFIG_DIR, { recursive: true });
13928
13931
  if (!fs.existsSync(DATA_PAGES_DIR)) fs.mkdirSync(DATA_PAGES_DIR, { recursive: true });
13929
13932
  if (projectState.site != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'site.json'), JSON.stringify(projectState.site, null, 2), 'utf8');
13933
+ if (projectState.menu != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'menu.json'), JSON.stringify(projectState.menu, null, 2), 'utf8');
13930
13934
  if (projectState.theme != null) fs.writeFileSync(path.join(DATA_CONFIG_DIR, 'theme.json'), JSON.stringify(projectState.theme, null, 2), 'utf8');
13931
13935
  if (projectState.page != null) {
13932
13936
  const safeSlug = (slug.replace(/[^a-zA-Z0-9-_]/g, '_') || 'page');
@@ -13982,5 +13986,4 @@ export default defineConfig({
13982
13986
 
13983
13987
 
13984
13988
 
13985
-
13986
13989
  END_OF_FILE_CONTENT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olonjs/cli",
3
- "version": "3.0.123",
3
+ "version": "3.0.124",
4
4
  "description": "The Sovereign CLI Engine for OlonJS.",
5
5
  "type": "module",
6
6
  "bin": {