@gradial/aci 0.1.20-preview.3 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -108
- package/bin/{aci → aci-darwin-arm64} +0 -0
- package/bin/aci.js +99 -6
- package/dist/assets/index.d.ts +3 -3
- package/dist/assets/index.js +3 -3
- package/dist/astro/index.d.ts +12 -3
- package/dist/astro/index.js +20 -5
- package/dist/content/assets.d.ts +17 -0
- package/dist/content/assets.js +65 -0
- package/dist/content/index.d.ts +1 -0
- package/dist/content/index.js +1 -0
- package/dist/define-component.d.ts +1 -2
- package/dist/define-component.js +73 -5
- package/dist/dev/content-watch.d.ts +37 -0
- package/dist/dev/content-watch.js +154 -0
- package/dist/dev/index.d.ts +24 -43
- package/dist/dev/index.js +4 -169
- package/dist/index.d.ts +14 -6
- package/dist/index.js +8 -9
- package/dist/next/asset-route.js +2 -2
- package/dist/next/config.d.ts +2 -2
- package/dist/next/config.js +5 -5
- package/dist/next/content-watch.js +6 -1
- package/dist/next/index.d.ts +2 -2
- package/dist/next/index.js +2 -2
- package/dist/next/middleware.d.ts +2 -2
- package/dist/next/middleware.js +6 -6
- package/dist/next/page.d.ts +1 -1
- package/dist/next/page.js +14 -12
- package/dist/next/render.d.ts +3 -3
- package/dist/next/render.js +11 -9
- package/dist/next/server.d.ts +12 -12
- package/dist/next/server.js +1 -1
- package/dist/react/Media.d.ts +24 -0
- package/dist/react/Media.js +30 -0
- package/dist/react/Picture.d.ts +12 -0
- package/dist/react/Picture.js +11 -0
- package/dist/react/VideoPlayer.d.ts +13 -0
- package/dist/react/{GradialVideoPlayer.js → VideoPlayer.js} +6 -5
- package/dist/react/index.d.ts +333 -3
- package/dist/react/index.js +89 -3
- package/dist/registry.d.ts +2 -2
- package/dist/registry.js +3 -3
- package/dist/types/block-ref.d.ts +26 -0
- package/dist/types/block-ref.js +28 -0
- package/dist/types/component.d.ts +36 -32
- package/dist/types/config.d.ts +1 -1
- package/dist/types/image.d.ts +33 -20
- package/dist/types/image.js +42 -50
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/link.d.ts +38 -0
- package/dist/types/link.js +58 -0
- package/dist/types/media.d.ts +16 -35
- package/dist/types/media.js +15 -84
- package/dist/types/renderer.d.ts +1 -1
- package/dist/types/rich-text.d.ts +40 -0
- package/dist/types/rich-text.js +39 -0
- package/dist/types/video.d.ts +7 -13
- package/dist/types/video.js +3 -3
- package/package.json +28 -76
- package/src/cli/compile-registry.mjs +120 -63
- package/src/cli/validate-content.mjs +38 -75
- package/src/types/image.ts +79 -60
- package/templates/astro/template/.aci.yaml +27 -0
- package/templates/astro/template/.storybook/main.ts +79 -0
- package/templates/astro/template/.storybook/manager.ts +6 -0
- package/templates/astro/template/.storybook/preview.ts +33 -0
- package/templates/astro/template/astro.config.mjs +37 -0
- package/templates/astro/template/package.json.tmpl +41 -0
- package/templates/astro/template/src/cms/contracts/layouts/index.ts +18 -0
- package/templates/astro/template/src/cms/registry.ts +28 -0
- package/templates/astro/template/src/components/chrome/Footer.astro +107 -0
- package/templates/astro/template/src/components/chrome/Header.astro +94 -0
- package/templates/astro/template/src/components/elements/AtomicBlock.astro +15 -0
- package/templates/astro/template/src/components/elements/AtomicBlocks.astro +16 -0
- package/templates/astro/template/src/components/elements/Button.astro +51 -0
- package/templates/astro/template/src/components/elements/ButtonBlock.astro +25 -0
- package/templates/astro/template/src/components/elements/Container.astro +11 -0
- package/templates/astro/template/src/components/elements/Icon.astro +31 -0
- package/templates/astro/template/src/components/elements/Logo.astro +29 -0
- package/templates/astro/template/src/components/elements/RemoteImage.astro +41 -0
- package/templates/astro/template/src/components/sections/ContainerSection.astro +32 -0
- package/templates/astro/template/src/components/sections/FeatureCard.astro +23 -0
- package/templates/astro/template/src/components/sections/FeatureGrid.astro +35 -0
- package/templates/astro/template/src/components/sections/HomeHero.astro +51 -0
- package/templates/astro/template/src/components/sections/StatsBar.astro +33 -0
- package/templates/astro/template/src/design-system/styles.css +399 -0
- package/templates/astro/template/src/design-system/tokens/colors.css +60 -0
- package/templates/astro/template/src/design-system/tokens/components.css +69 -0
- package/templates/astro/template/src/design-system/tokens/index.css +6 -0
- package/templates/astro/template/src/design-system/tokens/radii.css +5 -0
- package/templates/astro/template/src/design-system/tokens/shadows.css +5 -0
- package/templates/astro/template/src/design-system/tokens/spacing.css +13 -0
- package/templates/astro/template/src/design-system/tokens/typography.css +24 -0
- package/templates/astro/template/src/env.d.ts +1 -0
- package/templates/astro/template/src/fixtures/atomicBlocks.ts +33 -0
- package/templates/astro/template/src/fixtures/composition.ts +31 -0
- package/templates/astro/template/src/fixtures/index.ts +17 -0
- package/templates/astro/template/src/fixtures/sections.ts +39 -0
- package/templates/astro/template/src/layouts/SiteLayout.astro +30 -0
- package/templates/astro/template/src/pages/[...slug].astro +61 -0
- package/templates/astro/template/src/render/RenderPage.astro +66 -0
- package/templates/astro/template/src/stories/CompositionStoryFrame.astro +15 -0
- package/templates/astro/template/src/stories/HomeHero.stories.ts +24 -0
- package/templates/astro/template/src/stories/SectionStoryFrame.astro +16 -0
- package/templates/astro/template/src/stories/StoryDocFrame.astro +31 -0
- package/templates/astro/template/tsconfig.json +11 -0
- package/templates/common/.agents/AGENTS.md +37 -0
- package/templates/common/.agents/skills/aci/SKILL.md +162 -0
- package/templates/common/.agents/skills/authoring/SKILL.md +590 -0
- package/templates/common/.agents/skills/authoring/references/block-registry.md +151 -0
- package/templates/common/.agents/skills/authoring/references/contracts.md +153 -0
- package/templates/common/.agents/skills/authoring/references/design-system.md +171 -0
- package/templates/common/.agents/skills/authoring/references/image-assets.md +73 -0
- package/templates/common/.agents/skills/authoring/references/repo-structure.md +157 -0
- package/templates/common/.agents/skills/migration/SKILL.md +160 -0
- package/templates/common/.agents/skills/migration/references/analyzing-source.md +215 -0
- package/templates/common/.agents/skills/migration/references/component-migration.md +200 -0
- package/templates/common/.agents/skills/migration/references/selector-map.md +31 -0
- package/templates/common/.content/.gradial-dam/blobs/sha256/7f/bf/7fbfc7fe230ff12688c496f660119e41d9725c4504d82e310c15665c73c09292 +0 -0
- package/templates/common/.content/.gradial-dam/blobs/sha256/a0/f5/a0f506689de9b15a7055f70103a3f02cd3ba105771ae2de6754df2ede1210d3a +0 -0
- package/templates/common/.content/.gradial-dam/blobs/sha256/dd/b7/ddb7e9642be08317bcd4b2bd26b58ba8d0d34dd7239e03e684a4f3634fa3845b +0 -0
- package/templates/common/.content/.gradial-dam/blobs/sha256/fb/32/fb3260e8286ea8231ea1c77b9c0be92d6edd9026565731eb14cfdcfd6b1b75b3 +0 -0
- package/templates/common/.content/config/site.json +192 -0
- package/templates/common/.content/dam/folders/seed/ast_site_about_hero/asset.json +9 -0
- package/templates/common/.content/dam/folders/seed/ast_site_about_hero/editorial.json +14 -0
- package/templates/common/.content/dam/folders/seed/ast_site_about_hero/governance.json +23 -0
- package/templates/common/.content/dam/folders/seed/ast_site_about_hero/versions/v0001.json +37 -0
- package/templates/common/.content/dam/folders/seed/ast_site_home_hero/asset.json +9 -0
- package/templates/common/.content/dam/folders/seed/ast_site_home_hero/editorial.json +14 -0
- package/templates/common/.content/dam/folders/seed/ast_site_home_hero/governance.json +23 -0
- package/templates/common/.content/dam/folders/seed/ast_site_home_hero/versions/v0001.json +37 -0
- package/templates/common/.content/fragments/navbar/_index.json +25 -0
- package/templates/common/.content/fragments/site-footer/_index.json +62 -0
- package/templates/common/.content/pages/about/_index.json +51 -0
- package/templates/common/.content/pages/home/_index.json +112 -0
- package/templates/common/.content/schemas/site.schema.json +123 -0
- package/templates/common/README.md.tmpl +45 -0
- package/templates/common/contracts/components/button.contract.ts +19 -0
- package/templates/common/contracts/components/container.contract.ts +19 -0
- package/templates/common/contracts/components/featureCard.contract.ts +15 -0
- package/templates/common/contracts/components/featureGrid.contract.ts +16 -0
- package/templates/common/contracts/components/homeHero.contract.ts +36 -0
- package/templates/common/contracts/components/index.ts +21 -0
- package/templates/common/contracts/components/siteFooter.contract.ts +45 -0
- package/templates/common/contracts/components/siteNavigation.contract.ts +30 -0
- package/templates/common/contracts/components/statsBar.contract.ts +19 -0
- package/templates/common/design-system/styles.css +346 -0
- package/templates/common/design-system/tokens/colors.css +110 -0
- package/templates/common/design-system/tokens/components.css +86 -0
- package/templates/common/design-system/tokens/index.css +6 -0
- package/templates/common/design-system/tokens/radii.css +5 -0
- package/templates/common/design-system/tokens/shadows.css +9 -0
- package/templates/common/design-system/tokens/spacing.css +26 -0
- package/templates/common/design-system/tokens/typography.css +32 -0
- package/templates/common/eslint-rules/no-raw-tailwind-values.js +127 -0
- package/templates/common/public/assets/Dwire-model.png +0 -0
- package/templates/common/public/assets/bare-metal-logo.png +0 -0
- package/templates/common/public/assets/meridian-logo.svg +8 -0
- package/templates/common/public/assets/seattle.avif +0 -0
- package/templates/nextjs/template/.aci.yaml +25 -0
- package/templates/nextjs/template/.storybook/main.ts +13 -0
- package/templates/nextjs/template/.storybook/preview.ts +34 -0
- package/templates/nextjs/template/eslint.config.mjs +36 -0
- package/templates/nextjs/template/next-env.d.ts +6 -0
- package/templates/nextjs/template/next.config.ts +8 -0
- package/templates/nextjs/template/package.json.tmpl +46 -0
- package/templates/nextjs/template/postcss.config.mjs +7 -0
- package/templates/nextjs/template/src/app/[[...slug]]/page.tsx +8 -0
- package/templates/nextjs/template/src/app/gradial/assets/[releaseId]/[...path]/route.ts +31 -0
- package/templates/nextjs/template/src/app/layout.tsx +29 -0
- package/templates/nextjs/template/src/cms/contracts/components/button.contract.ts +19 -0
- package/templates/nextjs/template/src/cms/contracts/components/container.contract.ts +20 -0
- package/templates/nextjs/template/src/cms/contracts/components/homeHero.contract.ts +36 -0
- package/templates/nextjs/template/src/cms/contracts/components/index.ts +15 -0
- package/templates/nextjs/template/src/cms/contracts/components/siteFooter.contract.ts +45 -0
- package/templates/nextjs/template/src/cms/contracts/components/siteNavigation.contract.ts +30 -0
- package/templates/nextjs/template/src/cms/contracts/layouts/index.ts +16 -0
- package/templates/nextjs/template/src/cms/registry.ts +28 -0
- package/templates/nextjs/template/src/components/chrome/Footer.tsx +86 -0
- package/templates/nextjs/template/src/components/chrome/Header.tsx +74 -0
- package/templates/nextjs/template/src/components/elements/AtomicBlock.tsx +13 -0
- package/templates/nextjs/template/src/components/elements/Button.tsx +40 -0
- package/templates/nextjs/template/src/components/elements/ButtonBlock.tsx +18 -0
- package/templates/nextjs/template/src/components/elements/Container.tsx +14 -0
- package/templates/nextjs/template/src/components/elements/Icon.tsx +29 -0
- package/templates/nextjs/template/src/components/elements/Logo.tsx +38 -0
- package/templates/nextjs/template/src/components/sections/ContainerSection.tsx +28 -0
- package/templates/nextjs/template/src/components/sections/FeatureCard.tsx +25 -0
- package/templates/nextjs/template/src/components/sections/FeatureGrid.tsx +36 -0
- package/templates/nextjs/template/src/components/sections/HomeHero.tsx +62 -0
- package/templates/nextjs/template/src/components/sections/StatsBar.tsx +30 -0
- package/templates/nextjs/template/src/middleware.ts +4 -0
- package/templates/nextjs/template/src/stories/Button.stories.tsx +38 -0
- package/templates/nextjs/template/src/stories/Header.stories.tsx +30 -0
- package/templates/nextjs/template/src/stories/HomeHero.stories.tsx +33 -0
- package/templates/nextjs/template/tsconfig.json +23 -0
- package/templates/nextjs/template/vercel.json +6 -0
- package/dist/content/contract.d.ts +0 -83
- package/dist/content/contract.js +0 -104
- package/dist/content/tailwind-validator.d.ts +0 -6
- package/dist/content/tailwind-validator.js +0 -31
- package/dist/content/validation.d.ts +0 -108
- package/dist/content/validation.js +0 -183
- package/dist/react/GradialMedia.d.ts +0 -24
- package/dist/react/GradialMedia.js +0 -31
- package/dist/react/GradialPicture.d.ts +0 -14
- package/dist/react/GradialPicture.js +0 -30
- package/dist/react/GradialVideoPlayer.d.ts +0 -13
- package/dist/sveltekit/index.d.ts +0 -25
- package/dist/sveltekit/index.js +0 -66
- package/dist/sveltekit/preview.d.ts +0 -5
- package/dist/sveltekit/preview.js +0 -33
- package/src/types/component.ts +0 -49
- package/src/types/config.ts +0 -37
- package/src/types/data.ts +0 -47
- package/src/types/index.ts +0 -10
- package/src/types/layout.ts +0 -29
- package/src/types/media.ts +0 -125
- package/src/types/page.ts +0 -47
- package/src/types/render-mode.ts +0 -10
- package/src/types/renderer.ts +0 -83
- package/src/types/video.ts +0 -66
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aci
|
|
3
|
+
description: Onboarding, running builds, validating, and troubleshooting ACI sites. Use when understanding ACI architecture, running CLI commands, diagnosing build errors, or checking project health.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ACI — Onboarding and Troubleshooting
|
|
7
|
+
|
|
8
|
+
## How ACI Works
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
.content/ ──aci build──▶ .aci/compiled/ ──framework build──▶ dist/
|
|
12
|
+
JSON compiled JSON static HTML
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
1. You author content as JSON files under `.content/`.
|
|
16
|
+
2. The `aci` CLI compiles contracts (component schemas) and content into
|
|
17
|
+
`.aci/compiled/`.
|
|
18
|
+
3. Your framework (Astro or Next.js) reads the compiled content at build
|
|
19
|
+
or render time and produces HTML.
|
|
20
|
+
|
|
21
|
+
## Contracts vs Runtime
|
|
22
|
+
|
|
23
|
+
The most important architectural rule: **contracts are separate from
|
|
24
|
+
runtime components**.
|
|
25
|
+
|
|
26
|
+
| Layer | Location | Imports | Purpose |
|
|
27
|
+
|-------|----------|---------|---------|
|
|
28
|
+
| Contracts | `src/cms/contracts/` | `@gradial/aci`, `zod` only | Component IDs, Zod schemas, image slots, block refs |
|
|
29
|
+
| Runtime | `src/components/` | Framework code, CSS, contract types | Actual UI components (Astro, React) |
|
|
30
|
+
|
|
31
|
+
The ACI compiler imports only `src/cms/contracts/**`. Contract files must
|
|
32
|
+
never import framework components, CSS, browser globals, or runtime
|
|
33
|
+
modules. Runtime components may import contract types to keep props
|
|
34
|
+
connected to schemas.
|
|
35
|
+
|
|
36
|
+
## Framework Integration
|
|
37
|
+
|
|
38
|
+
Each framework uses a packaged SDK adapter for ACI dev/build behavior:
|
|
39
|
+
|
|
40
|
+
- **Astro**: `withAci()` in `astro.config.mjs`
|
|
41
|
+
- **Next.js**: `withAci()` in `next.config.ts`
|
|
42
|
+
|
|
43
|
+
These adapters own canonical ACI behavior: content watch/reload, local DAM
|
|
44
|
+
derivative serving at `/.gradial-dam/*`, and asset path rewrites. Do not
|
|
45
|
+
copy site-local middleware for these concerns.
|
|
46
|
+
|
|
47
|
+
Only Next.js and Astro are supported. SvelteKit support has been removed.
|
|
48
|
+
|
|
49
|
+
## CLI Commands
|
|
50
|
+
|
|
51
|
+
All commands run from the site directory (where `.aci.yaml` lives).
|
|
52
|
+
|
|
53
|
+
| Command | Purpose |
|
|
54
|
+
|---------|---------|
|
|
55
|
+
| `npm run aci:compile` | Compile contract registry. Run after changing contracts. |
|
|
56
|
+
| `npm run content:compile` | Compile content from `.content/` into `.aci/compiled/`. |
|
|
57
|
+
| `npm run aci:validate` | Validate content against schemas without building. |
|
|
58
|
+
| `npm run aci:doctor` | Check project health: config, content, schemas, routes. |
|
|
59
|
+
| `npm run aci:build` | Full build: contracts + content + framework. |
|
|
60
|
+
| `npm run typecheck` | TypeScript type checking. |
|
|
61
|
+
| `npm run build` | Framework build. |
|
|
62
|
+
| `npm run dev` | Start dev server with content hot-reload. |
|
|
63
|
+
|
|
64
|
+
## Development Workflow
|
|
65
|
+
|
|
66
|
+
### Start dev server
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install
|
|
70
|
+
npm run aci:compile
|
|
71
|
+
npm run dev
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The dev server watches for content changes and re-compiles automatically
|
|
75
|
+
via the framework's ACI adapter. Edit `.content/` files and see changes
|
|
76
|
+
in the browser.
|
|
77
|
+
|
|
78
|
+
### Full local build
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm run aci:compile
|
|
82
|
+
npm run content:compile
|
|
83
|
+
npm run typecheck
|
|
84
|
+
npm run build
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Content editing loop
|
|
88
|
+
|
|
89
|
+
1. Edit `.content/pages/{slug}/_index.json` or `.content/config/site.json`.
|
|
90
|
+
2. Run `npm run aci:validate` to check content is valid.
|
|
91
|
+
3. Run `npm run content:compile` to compile content.
|
|
92
|
+
4. Run `npm run build` to build the site.
|
|
93
|
+
5. Check the output for your changes.
|
|
94
|
+
|
|
95
|
+
## Test Order (Fastest to Slowest)
|
|
96
|
+
|
|
97
|
+
1. `npm run aci:validate` — content validation
|
|
98
|
+
2. `npm run aci:compile` — contract compile
|
|
99
|
+
3. `npm run typecheck` — TypeScript
|
|
100
|
+
4. `npm run content:compile` — content compile
|
|
101
|
+
5. `npm run build` — framework build
|
|
102
|
+
6. `npm run build:storybook` — Storybook (if configured)
|
|
103
|
+
|
|
104
|
+
## Troubleshooting
|
|
105
|
+
|
|
106
|
+
### "Unknown component" error during content compile
|
|
107
|
+
|
|
108
|
+
The content JSON references a `component` name that is not in the contract
|
|
109
|
+
barrel (`src/cms/contracts/components/index.ts`). Add the contract or fix
|
|
110
|
+
the content.
|
|
111
|
+
|
|
112
|
+
### Contract compile fails with CSS/framework import error
|
|
113
|
+
|
|
114
|
+
A contract file is importing runtime code. Contract files may only import
|
|
115
|
+
`@gradial/aci`, `zod`, and shared schema helpers. Move the import to a
|
|
116
|
+
runtime component file.
|
|
117
|
+
|
|
118
|
+
### Images not loading in dev
|
|
119
|
+
|
|
120
|
+
Check that `ACI_CONTENT_ROOT` is set and the framework adapter is wired.
|
|
121
|
+
Compiled DAM derivatives should be served at `/.gradial-dam/*`. Verify:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
curl -I http://localhost:4321/.gradial-dam/derivatives/sha256/.../image.webp
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Expected: `200` with `Content-Type: image/webp` (or similar image type).
|
|
128
|
+
|
|
129
|
+
### `aci` command not found
|
|
130
|
+
|
|
131
|
+
The CLI is provided by `@gradial/aci`. Run `npm install` first. The npm
|
|
132
|
+
scripts use `node ./node_modules/@gradial/aci/bin/aci.js` to find it
|
|
133
|
+
locally.
|
|
134
|
+
|
|
135
|
+
### Content value not surviving compile/build
|
|
136
|
+
|
|
137
|
+
If a value doesn't survive the round-trip, check:
|
|
138
|
+
- The field is in the contract schema (or it will be stripped).
|
|
139
|
+
- The field name matches between content JSON and contract schema.
|
|
140
|
+
- The field type matches (string vs number vs object).
|
|
141
|
+
|
|
142
|
+
## Key Files
|
|
143
|
+
|
|
144
|
+
| File | Purpose |
|
|
145
|
+
|------|---------|
|
|
146
|
+
| `.aci.yaml` | ACI config: contract paths, framework, routes, capabilities |
|
|
147
|
+
| `src/cms/contracts/components/index.ts` | Component contract barrel |
|
|
148
|
+
| `src/cms/contracts/layouts/index.ts` | Layout contract barrel |
|
|
149
|
+
| `src/cms/registry.ts` | Component registry (`createRegistry` with `[contract, component]` tuples) |
|
|
150
|
+
| `src/components/` | Runtime component implementations |
|
|
151
|
+
| `src/design-system/` | Design tokens and global styles |
|
|
152
|
+
| `.content/` | Local content for development |
|
|
153
|
+
|
|
154
|
+
## Deep Dive: Authoring
|
|
155
|
+
|
|
156
|
+
Read `.agents/skills/authoring/SKILL.md` for content authoring, component
|
|
157
|
+
development, design tokens, and the full contract/runtime split.
|
|
158
|
+
|
|
159
|
+
## Deep Dive: Migration
|
|
160
|
+
|
|
161
|
+
Read `.agents/skills/migration/SKILL.md` for reverse-engineering a live
|
|
162
|
+
site or design into ACI.
|