fimo 2.2.0-staging.1 → 2.2.0-staging.11
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 +3 -2
- package/assets/agent-templates/_default/config.yaml +1 -0
- package/assets/agent-templates/broken-link-sweeper/config.yaml +1 -0
- package/assets/agent-templates/content-translator/config.yaml +1 -0
- package/assets/agent-templates/post-deploy-check/config.yaml +1 -0
- package/assets/agent-templates/seo-audit/config.yaml +1 -0
- package/assets/skills/fimo-cli/SKILL.md +5 -5
- package/assets/skills/fimo-cli/references/agents.md +2 -1
- package/assets/skills/fimo-cli/references/assets.md +42 -3
- package/assets/skills/fimo-cli/references/content.md +3 -3
- package/assets/skills/fimo-cli/references/deploy.md +2 -2
- package/assets/skills/fimo-cli/references/forms.md +3 -1
- package/assets/skills/fimo-cli/references/history.md +1 -0
- package/assets/skills/fimo-cli/references/init.md +30 -39
- package/assets/skills/fimo-cli/references/schedules.md +4 -2
- package/assets/skills/fimo-cli/references/webhooks.md +2 -0
- package/assets/skills/fimo-code/references/frameworks/next.md +4 -1
- package/assets/skills/fimo-code/references/frameworks/react-router.md +4 -3
- package/assets/skills/fimo-migration/SKILL.md +44 -13
- package/assets/skills/fimo-migration/references/frameworks/nextjs.md +8 -0
- package/assets/skills/fimo-migration/references/qa.md +30 -4
- package/assets/skills/fimo-migration/references/questions-and-improvements.md +188 -0
- package/assets/skills/fimo-migration/references/workers/content-planner.md +8 -3
- package/assets/skills/fimo-migration/references/workers/validator.md +20 -6
- package/assets/skills/fimo-migration/references/workers.md +17 -6
- package/assets/skills/fimo-migration/references/workflow.md +33 -6
- package/assets/skills/fimo-studio/SKILL.md +3 -1
- package/assets/skills/fimo-studio/references/agents.md +25 -0
- package/assets/skills/fimo-studio/references/preview-and-responsive.md +4 -1
- package/assets/skills/fimo-studio/references/visual-editing.md +9 -1
- package/dist/build/astro/config.js +2 -1
- package/dist/build/vite/plugins/preview-health.d.ts +4 -0
- package/dist/build/vite/plugins/preview-health.js +40 -0
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +113 -113
- package/dist/runtime/content/client/collection-core.js +3 -2
- package/dist/runtime/content/client/core-types.d.ts +4 -3
- package/dist/runtime/content/client/internal.d.ts +2 -0
- package/dist/runtime/content/client/internal.js +54 -25
- package/dist/runtime/content/client/singleton-core.js +2 -1
- package/dist/runtime/content/index.d.ts +1 -1
- package/dist/runtime/content/index.js +1 -1
- package/dist/runtime/primitives/lib/index.d.ts +1 -1
- package/dist/runtime/primitives/lib/index.js +1 -1
- package/dist/runtime/primitives/lib/primitives.d.ts +24 -5
- package/dist/runtime/primitives/lib/primitives.js +69 -16
- package/dist/runtime/primitives/lib/template.js +2 -2
- package/dist/runtime/templates.d.ts +9 -2
- package/dist/runtime/templates.js +37 -8
- package/package.json +14 -9
- package/templates/astro/package.json +2 -2
- package/templates/nextjs/AGENTS.md +1 -1
- package/templates/nextjs/package.json +4 -4
- package/templates/react-router/.fimo/config.json +1 -2
- package/templates/react-router/AGENTS.md +1 -1
- package/templates/react-router/package.json +4 -4
- package/templates/sveltekit/package.json +2 -2
- package/templates/vite/package.json +4 -4
- package/templates/welcome/manifest.json +404 -0
- package/templates/welcome/media/analytics-overview.avif +0 -0
- package/templates/welcome/media/autonomous-loop.avif +0 -0
- package/templates/welcome/media/editable-preview.avif +0 -0
- package/templates/welcome/media/media-library.avif +0 -0
- package/templates/welcome/media/slack-teams.avif +0 -0
- package/templates/welcome/template/.fimo/agents/welcome-guide/GOAL.md +7 -0
- package/templates/welcome/template/.fimo/agents/welcome-guide/config.yaml +8 -0
- package/templates/welcome/template/.fimo/config.json +53 -0
- package/templates/welcome/template/src/font.css +60 -0
- package/templates/welcome/template/src/pages/ArticleDetail.tsx +68 -0
- package/templates/welcome/template/src/pages/Index.tsx +32 -0
- package/templates/welcome/template/src/pages/SiteContent.tsx +413 -0
- package/templates/welcome/template/src/pages/fallback-content.ts +133 -0
- package/templates/welcome/template/src/routes.ts +9 -0
- package/templates/welcome/template/src/schemas/Article.json +12 -0
- package/templates/welcome/template/src/schemas/Article.ts +59 -0
- package/templates/welcome/template/src/schemas/Article.types.ts +73 -0
- package/templates/welcome/template/src/schemas/HomePage.json +39 -0
- package/templates/welcome/template/src/schemas/HomePage.types.ts +114 -0
- package/assets/starters/fimo-site/manifest.json +0 -64
- package/assets/starters/fimo-site/template/.fimo/agents/content-guide/GOAL.md +0 -8
- package/assets/starters/fimo-site/template/.fimo/agents/content-guide/capabilities.yaml +0 -1
- package/assets/starters/fimo-site/template/.fimo/agents/content-guide/config.yaml +0 -9
- package/assets/starters/fimo-site/template/.fimo/agents/site-review/GOAL.md +0 -14
- package/assets/starters/fimo-site/template/.fimo/agents/site-review/capabilities.yaml +0 -3
- package/assets/starters/fimo-site/template/.fimo/agents/site-review/config.yaml +0 -9
- package/assets/starters/fimo-site/template/src/forms/contact.json +0 -14
- package/assets/starters/fimo-site/template/src/forms/contact.ts +0 -46
- package/assets/starters/fimo-site/template/src/pages/Contact.tsx +0 -193
- package/assets/starters/fimo-site/template/src/pages/Index.tsx +0 -27
- package/assets/starters/fimo-site/template/src/pages/SiteContent.tsx +0 -191
- package/assets/starters/fimo-site/template/src/schemas/HomePage.json +0 -28
- package/assets/starters/fimo-site/template/src/schemas/HomePage.ts +0 -29
- package/assets/starters/fimo-site/template/src/schemas/HomePage.types.ts +0 -64
package/README.md
CHANGED
|
@@ -27,9 +27,10 @@ Run the CLI with `npx` — no global install, always the latest:
|
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
npx fimo@latest login
|
|
30
|
-
|
|
30
|
+
# default Next.js App Router scaffold
|
|
31
|
+
npx fimo@latest init my-site
|
|
32
|
+
# or: npx fimo@latest init my-react-site --framework react-router
|
|
31
33
|
# or: npx fimo@latest init my-astro-site --framework astro
|
|
32
|
-
# or: npx fimo@latest init my-next-site --framework nextjs
|
|
33
34
|
# or: npx fimo@latest init my-svelte-site --framework sveltekit
|
|
34
35
|
cd my-site
|
|
35
36
|
```
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
version: 1
|
|
2
2
|
description: "Audit the project's pages for SEO health and write a markdown report."
|
|
3
|
+
model: openai/gpt-5.6-luna
|
|
3
4
|
# Read from main env. Switch to prod when running the audit against the
|
|
4
5
|
# live site (M13 keeps data_sources here so M16's sandbox adapter can
|
|
5
6
|
# bind the right Fimo API base URL).
|
|
@@ -52,7 +52,7 @@ A project can have multiple **Branches** — each is a git branch _plus_ its own
|
|
|
52
52
|
fimo login # authenticate via browser
|
|
53
53
|
fimo skills install # install the global Fimo skill for your AI tools
|
|
54
54
|
fimo init my-site --org <id> # one-stop setup: sign in, create/link a project, install deps + skills. Use the org **id** from `fimo orgs list`, NOT the slug.
|
|
55
|
-
fimo init my-site --
|
|
55
|
+
fimo init my-react-site --framework react-router --org <id> --yes --no-skills # canonical React Router template
|
|
56
56
|
fimo init --project-id <id> my-site # set up a project by ID: scaffold a newly created project or clone existing code
|
|
57
57
|
fimo clone # interactively choose an existing project to clone locally
|
|
58
58
|
cd my-site # then load skills on demand: fimo skills get fimo-code
|
|
@@ -64,6 +64,8 @@ fimo deploy # ON-DEMAND: hosted project previ
|
|
|
64
64
|
fimo deploy --publish # ON-DEMAND: publish live (only when the developer says "ship it")
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
New projects use the Next.js App Router template by default. Fimo's canonical React Router template is selected explicitly with `--framework react-router`; use `--framework vite` for a React SPA.
|
|
68
|
+
|
|
67
69
|
The working loop is local: run the app with the project's package-manager `dev` script (`pnpm dev` / `npm run dev` / `yarn dev` / `bun dev` — match the lockfile), ask the developer what they want, edit, and iterate against the live localhost server. Outside the first-time onboarding rule below, `fimo deploy` is **not** a required final step — reach for it only when the developer wants a hosted project preview or to go live, and only on their signal (see `references/deploy.md`).
|
|
68
70
|
|
|
69
71
|
`fimo validate` is the single entrypoint for "prove this project is ready" — it covers schema/form codegen, route metadata checks, lint, and missing label checks for `i18n.defaultLocale` from `.fimo/config.json` (fallback: `en`). Use `fimo labels set` / `set-many` to create or update label values in the DB. The underlying phases are also available individually under the hidden `fimo scripts` namespace for advanced/debug use.
|
|
@@ -76,12 +78,12 @@ Keep `fimo validate --json` at the front of the project's `build` script, which
|
|
|
76
78
|
|
|
77
79
|
Load the matching reference when the user's request fires its trigger. Recipes that involve writing code also need the `fimo-code` skill's package references — they're called out where relevant.
|
|
78
80
|
|
|
79
|
-
- "Create a new Fimo project / scaffold a site / start a new website /
|
|
81
|
+
- "Create a new Fimo project / scaffold a site / start a new website / link an existing project locally" → `references/init.md`
|
|
80
82
|
- "Add a content type / blog / products / content schemas / CMS" → `references/content.md` (workflow) **+ run `fimo skills get fimo-code --ref content/schema` and load the detected framework reference**
|
|
81
83
|
- "Declare Pages routes / configure Pages sources or route params / control what Studio shows for a route" → `references/pages.md`
|
|
82
84
|
- "Add a contact / signup / feedback / newsletter form" → `references/forms.md` (workflow) **+ run `fimo skills get fimo-code --ref forms` for the JSON spec and generated client**
|
|
83
85
|
- "View form submissions / who filled out the contact form / inspect what users sent / how many signups" → `references/forms.md` § Reading submissions
|
|
84
|
-
- "Upload an image / hero / cover / existing media file" → `references/assets.md`
|
|
86
|
+
- "Upload, inspect, replace, safely remove, or permanently destroy an image / hero / cover / existing media file" → `references/assets.md` **+ run `fimo skills get fimo-code --ref assets` for the `FimoMedia` shape and rendering**
|
|
85
87
|
- "Generate AI image / video / draft preview / image edit / cover from a prompt" → `references/media.md` (task commands, quality, recipes, and verification) **+ run `fimo skills get fimo-code --ref assets` for the `FimoMedia` shape if you'll plug the result into UI**
|
|
86
88
|
- "Add labels / update static copy / fix missing `t()` values" → `references/labels.md` (workflow) **+ run `fimo skills get fimo-code --ref labels` and load the detected framework reference**
|
|
87
89
|
- "Enable locales / configure default locale / integrate an existing locale system" → `references/locales.md` **+ run `fimo skills get fimo-code --ref locales` and load the detected framework locale reference**
|
|
@@ -140,8 +142,6 @@ These fire at specific moments in the project lifecycle. **Surface them proactiv
|
|
|
140
142
|
- **Running `fimo deploy` just to get the current preview URL** — that's a commit + push + sandbox sync when only destination resolution is needed. Use `fimo preview url` instead. See `references/preview.md`.
|
|
141
143
|
- **Using `fimo deploy --publish` casually** — `--publish` makes the site live to the public. Plain `fimo deploy` (preview) is the default. Use `--publish` only when the user says "ship it" / "go live" / "publish".
|
|
142
144
|
- **Bare `fimo init` in a non-interactive shell** — will hang. Always pass `[dir]`, `--no-install` (or `--install`), `--no-skills` (or `--skills`), and `--org`/`--agents` as needed explicitly when scripted.
|
|
143
|
-
- **Using a starter on an existing project** — `--starter` is create-new only. Keep `--project-id` flows blank and use explicit content/form/label commands when changing an existing project.
|
|
144
|
-
- **Treating a starter as a permanent demo tenant** — starters are opt-in seed data in the new project, not a global default. Keep starter agents manual-only; do not add schedules or webhooks unless the project owner explicitly asks for automation.
|
|
145
145
|
- **Hardcoding content / strings / images in code** — that's what schemas, `t()`, and the media library are for. See the `fimo-code` skill's anti-patterns.
|
|
146
146
|
- **Adding another deploy tool (Vercel, Netlify, Cloudflare Pages)** — Fimo handles deploys; don't bolt another platform on.
|
|
147
147
|
- **Committing secrets** — hidden values use `fimo secrets`; public browser-safe values use `fimo vars`. Local env files are ignored and must not become deploy inputs.
|
|
@@ -40,6 +40,7 @@ fimo agents secrets remove <name> <KEY> [-C <dir>]
|
|
|
40
40
|
|
|
41
41
|
- **`list-templates`** — list the bundled starter templates with the first line of each template's `GOAL.md` as a summary. Ships with the CLI binary; no API call. The five bundled templates are `_default`, `seo-audit`, `content-translator`, `broken-link-sweeper`, `post-deploy-check`.
|
|
42
42
|
- **`create <name>`** — scaffold `.fimo/agents/<name>/` from a template (default `_default`, a minimal valid bundle with a manual trigger). `--description <text>` writes a one-line tagline into the scaffolded `config.yaml` (surfaces in the dashboard's agents list). When run **without** `-C`, it requires the cwd to be inside a real Fimo project (walks up for `.fimo/project.json` or legacy `.fimo.settings.json`) and errors out cleanly otherwise, so it never leaks an agent bundle into a stray cwd. If the template declares capabilities, an install-consent flow runs after the copy (`--quiet` skips it; critical caps still abort).
|
|
43
|
+
- Every generated `config.yaml` includes `model: openai/gpt-5.6-luna`. Change that top-level value to another supported Fimo text model when needed; bundles without `model` keep the Luna fallback. Deploy after changing it because cloud runs use the deployed bundle.
|
|
43
44
|
- **`list`** — list the agents declared under `<project>/.fimo/agents/` (or legacy root `agents/`), with each one's trigger types and capability count. Local — the bundle list is the source of truth even if the project isn't linked yet.
|
|
44
45
|
- **`validate [name]`** — run the full validation pipeline: parse → capability vocabulary → composition (cycle / missing sub-agents / invalid grants) → semantic + Fimo project config policy checks. Omit `name` to validate every bundle. `--json` emits a structured `ValidationReport` for CI; exit code is non-zero on any failure.
|
|
45
46
|
- **`secrets add/remove/list`** — edit or inspect the agent's requested secret names in `.fimo/agents/<name>/config.yaml` (or legacy root). These commands do not create, rotate, or reveal secret values. Store values with `fimo secrets add`; run `fimo agents validate` to check that required requested secrets exist in the project. See `references/project-vars-and-secrets.md`.
|
|
@@ -241,7 +242,7 @@ Example for a content editor that can read and update entries but cannot change
|
|
|
241
242
|
|
|
242
243
|
```bash
|
|
243
244
|
fimo agents run <name> [--branch <branch>] [--project <id>] [--skip-drift-check] [-C <dir>]
|
|
244
|
-
fimo agents runs <name> [--limit <n>] [--branch <branch>] [--project <id>] [-C <dir>]
|
|
245
|
+
fimo agents runs <name> [--limit <n>] [--cursor <cursor>] [--all-pages] [--branch <branch>] [--project <id>] [-C <dir>]
|
|
245
246
|
fimo agents report <name> [--session <id>] [--branch <branch>] [--project <id>] [-C <dir>]
|
|
246
247
|
fimo agents logs <name> [--session <id>] [--project <id>] [-C <dir>]
|
|
247
248
|
```
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Package contract: run `fimo skills get fimo-code --ref assets` for `FimoMedia`, `--ref ui` for rendering primitives, and load the detected framework reference for framework-specific integration.
|
|
4
4
|
> For **generating** new images / videos with AI, see **`references/media.md`** for the task commands and recipes.
|
|
5
5
|
|
|
6
|
-
This file covers the **CLI workflow** for media that already exists: uploading files, browsing the library,
|
|
6
|
+
This file covers the **CLI workflow** for media that already exists: uploading files, browsing the library, inspecting reference impact, replacing references, and removing assets safely.
|
|
7
7
|
|
|
8
8
|
## Upload a file
|
|
9
9
|
|
|
@@ -96,9 +96,12 @@ fimo assets list --search "wolf"
|
|
|
96
96
|
fimo assets list --search "hero" --image
|
|
97
97
|
fimo assets list --search "logo" --type file --sort-by createdAt
|
|
98
98
|
|
|
99
|
-
fimo assets list --limit 50 --
|
|
99
|
+
fimo assets list --limit 50 --cursor <next-cursor> # next page
|
|
100
|
+
fimo assets list --all-pages # every remaining page
|
|
100
101
|
```
|
|
101
102
|
|
|
103
|
+
The response includes `nextCursor` when another page exists. Keep the same filters when continuing. `--offset` remains a compatibility alias for existing scripts.
|
|
104
|
+
|
|
102
105
|
The `--search` query matches:
|
|
103
106
|
|
|
104
107
|
- `name` (file name)
|
|
@@ -142,11 +145,47 @@ When the agent needs to **see** the image — e.g., Claude inspecting it to pick
|
|
|
142
145
|
fimo assets create-folder "Blog Images"
|
|
143
146
|
fimo assets create-folder "Covers" --parent-id <uuid>
|
|
144
147
|
fimo assets move <asset-id> --parent-id <folder-uuid>
|
|
145
|
-
fimo assets delete <asset-id>
|
|
146
148
|
```
|
|
147
149
|
|
|
148
150
|
`--parent-id` is **required** on `move` and must be a folder UUID. (Moving an asset back to the library root isn't supported by this command today — the server rejects a non-UUID parent.)
|
|
149
151
|
|
|
152
|
+
## Inspect, replace, and remove safely
|
|
153
|
+
|
|
154
|
+
Check structured content references before removal:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
fimo assets usage <asset-id> --json
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The result reports coverage, status, and counts for the Current Branch, Main, and Live. Other Branches are not checked, so this is guidance, never a project-wide claim that an asset is unused. Code references are not scanned.
|
|
161
|
+
|
|
162
|
+
Replace structured references only in the Current Branch:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
fimo assets replace <source-id> --with <replacement-id>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
This changes references, not file bytes. It leaves the original asset, Main, Live, other Branches, and code references unchanged.
|
|
169
|
+
|
|
170
|
+
Remove from the selected environment and include reference guidance in the receipt:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
fimo assets remove <asset-id>
|
|
174
|
+
fimo assets remove <source-id> --replace-with <replacement-id>
|
|
175
|
+
fimo assets remove <asset-id> --without-checking
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Reference counts and incomplete scopes do not block environment removal. Main and Live keep their rows, and shared bytes remain available to them. Use `--replace-with` when Current Branch references should point to another asset before removal. `--without-checking` skips only the guidance scan and remains environment-scoped.
|
|
179
|
+
|
|
180
|
+
Project-wide destruction is separate and requires confirmation:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
fimo assets remove <asset-id> --permanent
|
|
184
|
+
fimo assets remove <asset-id> --permanent --yes
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Use `--permanent` only when the user explicitly wants the asset destroyed across the project. It cannot be combined with `--replace-with` or `--without-checking`. The legacy `fimo assets delete` spelling remains an alias for `remove`.
|
|
188
|
+
|
|
150
189
|
## End-to-end workflow
|
|
151
190
|
|
|
152
191
|
1. Upload with `fimo assets upload`, use `fimo assets bulk-upload` for a batch, or generate with a task command such as `fimo image generate`.
|
|
@@ -69,7 +69,7 @@ Use singular commands for one entry. Bulk create and per-entry bulk update also
|
|
|
69
69
|
```bash
|
|
70
70
|
fimo entries create <TypeName> --body '<json>'
|
|
71
71
|
fimo entries create <TypeName> --locale es --document-id <documentId> --body '<json>'
|
|
72
|
-
fimo entries list <TypeName> [--limit N] [--
|
|
72
|
+
fimo entries list <TypeName> [--limit N] [--cursor CURSOR] [--all-pages] [--search Q] [--where JSON] [--sort F] [--fields FIELDS] [--populate FIELDS]
|
|
73
73
|
fimo entries list <TypeName> --locale es
|
|
74
74
|
fimo entries get <TypeName> <id> [--locale es]
|
|
75
75
|
fimo entries update <TypeName> <id> [--locale es] --body '<json>'
|
|
@@ -90,12 +90,12 @@ fimo entries list BlogPost --where '{"featured":true}' --sort -publishedAt
|
|
|
90
90
|
fimo entries list BlogPost --where '{"rank":{"$gte":3}}' --sort rank
|
|
91
91
|
fimo entries list BlogPost --where '{"__fimo":{"contentType":{"$eq":"BlogPost"}}}'
|
|
92
92
|
fimo entries list BlogPost --search "launch"
|
|
93
|
-
fimo entries list BlogPost --limit 10 --
|
|
93
|
+
fimo entries list BlogPost --limit 10 --cursor <next-cursor> --sort title
|
|
94
94
|
fimo entries list BlogPost --fields slug,title,excerpt,coverImage --sort -publishedAt --limit 12
|
|
95
95
|
fimo entries list BlogPost --fields slug,title,author --populate author
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Use the canonical read query flags: `--search`, `--sort`, `--where`, `--limit`, `--
|
|
98
|
+
Use the canonical read query flags: `--search`, `--sort`, `--where`, `--limit`, `--cursor`, `--all-pages`, `--fields`, and `--populate`. `--offset` remains a compatibility alias for existing scripts.
|
|
99
99
|
`--where` is a JSON object keyed by schema field name. Simple values mean equality and stay typed inside the JSON (`{"featured":true}`, `{"category":"react"}`, `{"rank":{"$gte":3}}`); operator objects support `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$in`, `$nin`, `$contains`, `$startsWith`, and `$null`, subject to the field type. Public Fimo-owned metadata lives under `__fimo`; currently `__fimo.contentType` is filterable.
|
|
100
100
|
|
|
101
101
|
Reference filters take the target `id` string (`{"author":"750e..."}`). On a to-many field, `$eq` and `$contains` mean membership, `$in` means any listed target is present, `$ne` and `$nin` mean none are present, and `$null: true` means empty or missing. Reference fields cannot be sorted; use `--sort field` / `--sort -field` on scalar fields.
|
|
@@ -50,11 +50,11 @@ Public project variables managed with `fimo vars add` and `fimo vars update` are
|
|
|
50
50
|
|
|
51
51
|
## Diagnose a failed publication
|
|
52
52
|
|
|
53
|
-
Use the publication ID returned by the failed command: run `fimo publish inspect <id> --json` for its durable status, then `fimo publish logs <id> --json` for a bounded build-log tail. Logs come from the hosting provider and may be unavailable after its deployment is reclaimed.
|
|
53
|
+
Use the publication ID returned by the failed command: run `fimo publish inspect <id> --json` for its durable status, then `fimo publish logs <id> --json` for a bounded build-log tail. Use `fimo publish list --cursor <cursor>` to continue through older attempts or `--all-pages` to fetch the complete retained history. `--before` remains a compatibility alias. Logs come from the hosting provider and may be unavailable after its deployment is reclaimed.
|
|
54
54
|
|
|
55
55
|
## Diagnose a failed preview deploy
|
|
56
56
|
|
|
57
|
-
If the sandbox fails to install dependencies or start the app, run `fimo logs --json` before retrying. Read the newest install and dev-server events first; when the response is truncated, use its `previousCursor` as `fimo logs --
|
|
57
|
+
If the sandbox fails to install dependencies or start the app, run `fimo logs --json` before retrying. Read the newest install and dev-server events first; when the response is truncated, use its `previousCursor` as `fimo logs --cursor <cursor> --json` to fetch the preceding page, or use `--all-pages` to fetch every retained page. `--before` remains a compatibility alias. Do not recreate or replace the sandbox before collecting logs, because that can discard the failure evidence.
|
|
58
58
|
|
|
59
59
|
When Preview reports blocked dependency build scripts, treat that as a project security-policy repair, not a transient sandbox failure. Review every named package before approving it, then use the package manager's narrow project-owned mechanism:
|
|
60
60
|
|
|
@@ -29,11 +29,13 @@ Notification recipients for form submissions are configured in the Fimo web UI,
|
|
|
29
29
|
After a form is live and users have filled it out, inspect submissions from the terminal:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
fimo forms submissions list <formIdOrName> [--limit 50] [--
|
|
32
|
+
fimo forms submissions list <formIdOrName> [--limit 50] [--cursor CURSOR] [--all-pages] [--search "<q>"] [--sort asc|desc]
|
|
33
33
|
fimo forms submissions get <formIdOrName> <submissionId>
|
|
34
34
|
fimo forms submissions stats <formIdOrName>
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
The list response includes `nextCursor` when another page exists. `--offset` remains a compatibility alias for existing scripts.
|
|
38
|
+
|
|
37
39
|
- `<formIdOrName>` accepts either the form's UUID or its `name` (the same name in the JSON file). Names that don't resolve to exactly one form return an error.
|
|
38
40
|
- `list` returns `{ data: [...], total }`. Newest-first by default; pass `--sort asc` to reverse.
|
|
39
41
|
- `search` matches against submission contents server-side.
|
|
@@ -28,6 +28,7 @@ there is no local `.fimo/project.json`.
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
fimo history list --limit 20 --cursor <cursor>
|
|
31
|
+
fimo history list --all-pages
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
The list also reports compressed snapshot usage and the current retention period. Restore points expire after 14 days on Free and pay-as-you-go plans, or 90 days on Premium. The expiry is fixed when each point is created.
|
|
@@ -11,40 +11,40 @@ fimo init [dir] [options]
|
|
|
11
11
|
`fimo init` runs the full onboarding in one shot:
|
|
12
12
|
|
|
13
13
|
1. **Signs in automatically** — if there's no session it opens the browser loopback login. In `--json` / non-TTY with no session it fails with `NOT_AUTHENTICATED` (run `fimo login` first).
|
|
14
|
-
2. **Resolves the project** — with `--project-id <id>` it sets up the named Fimo project: a project with no code yet is scaffolded as a fresh site, while an existing repository is cloned. Without it, `init` creates a NEW project. An interactive TTY shows a "Create new / Link existing" picker; non-interactive shells default to create-new. New projects use
|
|
14
|
+
2. **Resolves the project** — with `--project-id <id>` it sets up the named Fimo project: a project with no code yet is scaffolded as a fresh site, while an existing repository is cloned. Without it, `init` creates a NEW project. An interactive TTY shows a "Create new / Link existing" picker; non-interactive shells default to create-new. New projects use the Next.js App Router by default; `--framework react-router`, `--framework vite`, `--framework astro`, and `--framework sveltekit` select the other minimal framework-native shells.
|
|
15
15
|
3. **Installs dependencies** — prompts for the package manager, or honor `--package-manager <pm>` / `--no-install`.
|
|
16
16
|
4. **Optionally sets up Fimo skills** — confirm prompt, or `--skills` / `--no-skills`.
|
|
17
17
|
|
|
18
18
|
Generated pnpm projects pin `pnpm@10.26.0` and carry project-owned `pnpm-workspace.yaml#strictDepBuilds: true` and `#allowBuilds` settings. Generated Bun projects trust the same required packages through `package.json#trustedDependencies`. Keep the selected package manager's policy committed. When adding a dependency with an install script, review it before extending that policy; never replace it with a blanket allow-all install.
|
|
19
19
|
|
|
20
|
-
| Flag | Required | Purpose
|
|
21
|
-
| ---------------------------- | ----------------------------- |
|
|
22
|
-
| `[dir]` positional | yes in non-TTY for create-new | Target directory (e.g. `my-site`)
|
|
23
|
-
| `--project-id <id>` | no | Set up the named Fimo project: scaffold and push a fresh site when it has no code yet, otherwise clone it.
|
|
24
|
-
| `--org <id>` | no | Target organization **id** when creating (use the `ID` column from `fimo orgs list`, NOT the slug). Picker shown interactively if omitted and TTY.
|
|
25
|
-
| `--branch <name>` | no | Branch to check out when linking an existing project (defaults to `main`).
|
|
26
|
-
| `--env <name>` | no | Compatibility alias for `--branch <name>`.
|
|
27
|
-
| `--framework <framework>` | no | New-project scaffold: `
|
|
28
|
-
| `--
|
|
29
|
-
| `--
|
|
30
|
-
| `--
|
|
31
|
-
| `--
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
| `-y, --yes` | no | Run non-interactively using defaults (no prompts). |
|
|
20
|
+
| Flag | Required | Purpose |
|
|
21
|
+
| ---------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
22
|
+
| `[dir]` positional | yes in non-TTY for create-new | Target directory (e.g. `my-site`) |
|
|
23
|
+
| `--project-id <id>` | no | Set up the named Fimo project: scaffold and push a fresh site when it has no code yet, otherwise clone it. |
|
|
24
|
+
| `--org <id>` | no | Target organization **id** when creating (use the `ID` column from `fimo orgs list`, NOT the slug). Picker shown interactively if omitted and TTY. |
|
|
25
|
+
| `--branch <name>` | no | Branch to check out when linking an existing project (defaults to `main`). |
|
|
26
|
+
| `--env <name>` | no | Compatibility alias for `--branch <name>`. |
|
|
27
|
+
| `--framework <framework>` | no | New-project scaffold: `nextjs` (App Router, default), `react-router`, `vite` (React SPA), `astro`, or `sveltekit`. Existing repositories are preserved. |
|
|
28
|
+
| `--package-manager <pm>` | no | `npm` \| `pnpm` \| `yarn` \| `bun`. |
|
|
29
|
+
| `--install` / `--no-install` | yes in non-TTY | Install deps after checkout (or skip it). |
|
|
30
|
+
| `--skills` / `--no-skills` | yes in non-TTY | Install the global Fimo skill (or skip it). |
|
|
31
|
+
| `--agents <list>` | no | Comma-separated agent IDs (e.g. `claude-code,cursor`). Pass `none` to skip installing the global skill. |
|
|
32
|
+
| `-a, --agent <id>` | alternative | Repeatable form: `-a claude-code -a cursor`. |
|
|
33
|
+
| `--template-root <path>` | no | Override the bundled template (development only). |
|
|
34
|
+
| `-y, --yes` | no | Run non-interactively using defaults (no prompts). |
|
|
36
35
|
|
|
37
36
|
In a non-TTY shell the create-new path requires `[dir]`, `--install` / `--no-install`, and `--skills` / `--no-skills` (and `--org` if you have no active org and belong to multiple orgs). Without them the command exits with `Cannot prompt in a non-interactive shell.`
|
|
38
37
|
|
|
39
|
-
### Non-interactive
|
|
38
|
+
### Non-interactive setup
|
|
40
39
|
|
|
41
40
|
Use explicit flags when a script or agent owns the flow. `--json` gives the
|
|
42
41
|
caller one stable result envelope; `--yes` is useful when running in a TTY but
|
|
43
|
-
is not required in a pipe or CI shell. The
|
|
42
|
+
is not required in a pipe or CI shell. The default scaffold is the Next.js App
|
|
43
|
+
Router template. Select the canonical React Router template explicitly with
|
|
44
|
+
`--framework react-router`.
|
|
44
45
|
|
|
45
46
|
```bash
|
|
46
47
|
fimo --json init my-site \
|
|
47
|
-
--starter fimo-site@1 \
|
|
48
48
|
--org <organizationId> \
|
|
49
49
|
--no-install \
|
|
50
50
|
--no-skills \
|
|
@@ -52,22 +52,18 @@ fimo --json init my-site \
|
|
|
52
52
|
--yes
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
`src/forms/contact.json`, and commits the starter agents as manual-only bundles.
|
|
58
|
-
`--starter` is create-new only; an existing-project command such as
|
|
59
|
-
`fimo init --project-id <id> --starter fimo-site@1` fails before cloning or
|
|
60
|
-
writing anything. If dependencies were skipped, install them and run
|
|
61
|
-
`fimo validate` before starting the app so generated clients are present.
|
|
55
|
+
If dependencies were skipped, install them and run `fimo validate` before
|
|
56
|
+
starting the app so generated clients are present.
|
|
62
57
|
|
|
63
58
|
> **Zero-install:** the selected `fimo init` invocation needs no global install. `fimo projects create` is also an alias of `fimo init` (create-new path).
|
|
64
59
|
|
|
65
60
|
### Choose the application framework
|
|
66
61
|
|
|
67
|
-
Omit `--framework` for the
|
|
68
|
-
|
|
62
|
+
Omit `--framework` for the default Next.js App Router shell, or select a
|
|
63
|
+
different framework explicitly:
|
|
69
64
|
|
|
70
65
|
```bash
|
|
66
|
+
fimo init my-react-site --framework react-router --org <organizationId>
|
|
71
67
|
fimo init my-vite-site --framework vite --org <organizationId>
|
|
72
68
|
fimo init my-astro-site --framework astro --org <organizationId>
|
|
73
69
|
fimo init my-next-site --framework nextjs --org <organizationId>
|
|
@@ -80,6 +76,10 @@ boundary that keeps the default locale unprefixed. The Astro shell also includes
|
|
|
80
76
|
content-backed example with static, on-demand, and dynamic routes; the other shells intentionally
|
|
81
77
|
contain no schema, labels, or designed website.
|
|
82
78
|
|
|
79
|
+
The React Router shell is the canonical Fimo React template for framework mode;
|
|
80
|
+
select it with `--framework react-router` when a project should use React Router
|
|
81
|
+
instead of the default Next.js App Router shell.
|
|
82
|
+
|
|
83
83
|
Set the primary locale from the request: when several are explicitly named, use the first as default;
|
|
84
84
|
if none is requested, keep `en` and tell the user. Update `.fimo/config.json#i18n`, the framework-native
|
|
85
85
|
locale boundary, matcher, and HTML language default. Do not keep `en` solely because the shell starts
|
|
@@ -89,7 +89,6 @@ After init, load the project rules and `fimo-code` to build the requested site.
|
|
|
89
89
|
If you replace a shell's code with a site that uses another framework or none,
|
|
90
90
|
fix `runtime.framework` in the same change
|
|
91
91
|
(`fimo-code` → `references/frameworks/hosting.md`).
|
|
92
|
-
The current `fimo-site@1` content starter supports React Router only.
|
|
93
92
|
|
|
94
93
|
For `--agents`, pass the AI tool you're running in: `--agents=claude-code` for Claude Code, `--agents=cursor` for Cursor, `--agents=codex` for Codex, etc. When the flag is omitted, env-var detection of the invoking harness (e.g. `CLAUDECODE` / `CLAUDE_CODE_ENTRYPOINT` → claude-code) auto-targets that agent; other agents must be selected explicitly via `--agents`/`-a` or the interactive picker.
|
|
95
94
|
|
|
@@ -109,21 +108,13 @@ fimo link <projectId> --relink
|
|
|
109
108
|
|
|
110
109
|
`fimo init` (create-new path) scaffolds:
|
|
111
110
|
|
|
112
|
-
- The selected project shell:
|
|
111
|
+
- The selected project shell: Next.js App Router by default, React Router with `--framework react-router`, a native React SPA with `--framework vite`, Astro with `--framework astro`, or SvelteKit with `--framework sveltekit`
|
|
113
112
|
- `.fimo/project.json` — links this directory to the remote project (read-only after creation)
|
|
114
113
|
- `.fimo/config.json` — project, optional Studio Pages route metadata, locale, SEO, and agent policy
|
|
115
114
|
- `.fimo/agents/` — versioned agent bundles
|
|
116
115
|
- `AGENTS.md` + `CLAUDE.md` — project rules (from the template) read by AGENTS.md-compatible tools and Claude Code. Both point the agent at `fimo skills get` to load the real skills on demand.
|
|
117
116
|
- A git repository with `fimo` as the remote, and — after dependencies install — an initial commit (including the lockfile) plus an initial push
|
|
118
117
|
|
|
119
|
-
When `--starter fimo-site@1` is supplied, the overlay also includes a
|
|
120
|
-
content-backed homepage, `src/schemas/HomePage.json`, a `contact` form spec,
|
|
121
|
-
nine English labels, and two read-only agent bundles (`site-review` and
|
|
122
|
-
`content-guide`). The seed is opt-in and scoped to the new project; the default
|
|
123
|
-
blank template and all existing-project flows remain unchanged. Starter agents
|
|
124
|
-
declare only a manual trigger so copying them does not create schedules or
|
|
125
|
-
webhooks.
|
|
126
|
-
|
|
127
118
|
Nothing is written into per-agent skill dirs: the rich skills are fetched on demand via `fimo skills get <name>`, never copied into the project. `fimo init` separately installs the small global `fimo` bootstrap skill for the agents you select (machine-wide, not in the project) unless you pass `--no-skills`. For other agents' rule-file variants (`.cursor/rules/fimo.mdc`, `.windsurfrules`, `GEMINI.md`), run `fimo rules sync`. See `references/agent-setup.md`.
|
|
128
119
|
|
|
129
120
|
Codex, OpenCode, Aider, and similar AGENTS.md-native tools work directly off AGENTS.md.
|
|
@@ -22,7 +22,7 @@ fimo schedules resume <schedule>
|
|
|
22
22
|
fimo schedules run <schedule>
|
|
23
23
|
fimo schedules run <schedule> --no-wait
|
|
24
24
|
fimo schedules runs <schedule> --limit 25 --status failed
|
|
25
|
-
fimo schedules runs <schedule> --all
|
|
25
|
+
fimo schedules runs <schedule> --all-pages
|
|
26
26
|
fimo schedules runs show <run-id>
|
|
27
27
|
fimo schedules delete <schedule>
|
|
28
28
|
```
|
|
@@ -59,9 +59,11 @@ Run history is cursor-paginated:
|
|
|
59
59
|
fimo schedules runs nightly --limit 50
|
|
60
60
|
fimo schedules runs nightly --cursor <cursor>
|
|
61
61
|
fimo schedules runs nightly --status succeeded
|
|
62
|
-
fimo schedules runs nightly --all
|
|
62
|
+
fimo schedules runs nightly --all-pages
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
`--all` remains a compatibility alias for existing scripts.
|
|
66
|
+
|
|
65
67
|
Run detail includes status, timing, trigger, exit/error information, retained output, output retention metadata, and secret snapshot metadata. Output is capped and redacted before it is returned.
|
|
66
68
|
|
|
67
69
|
## JSON
|
|
@@ -121,6 +121,8 @@ fimo webhooks list
|
|
|
121
121
|
fimo webhooks get <webhook-id>
|
|
122
122
|
fimo webhooks test <webhook-id> --wait
|
|
123
123
|
fimo webhooks deliveries <webhook-id> --limit 20
|
|
124
|
+
fimo webhooks deliveries <webhook-id> --cursor <next-cursor>
|
|
125
|
+
fimo webhooks deliveries <webhook-id> --all-pages
|
|
124
126
|
fimo webhooks delivery <webhook-id> <delivery-id>
|
|
125
127
|
```
|
|
126
128
|
|
|
@@ -47,7 +47,10 @@ own tenant URL.
|
|
|
47
47
|
## Hosted preview config
|
|
48
48
|
|
|
49
49
|
Wrap the existing Next config once so `next dev` accepts Fimo's hosted preview
|
|
50
|
-
origins without exposing the active preview provider to the application
|
|
50
|
+
origins without exposing the active preview provider to the application. If
|
|
51
|
+
the application does not set Next's `devIndicators`, the wrapper hides it in
|
|
52
|
+
hosted Preview while local `next dev` keeps Next's default. Any explicit
|
|
53
|
+
`devIndicators` setting is preserved:
|
|
51
54
|
|
|
52
55
|
```ts
|
|
53
56
|
import type { NextConfig } from 'next';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# React Router framework mode
|
|
2
2
|
|
|
3
|
-
This is the canonical Fimo
|
|
4
|
-
`fimo init`. You can also apply it to an existing
|
|
5
|
-
its routes, rendering choices, providers, and
|
|
3
|
+
This is the canonical Fimo React Router template and framework-mode setup used
|
|
4
|
+
by `fimo init --framework react-router`. You can also apply it to an existing
|
|
5
|
+
React Router project: preserve its routes, rendering choices, providers, and
|
|
6
|
+
SEO.
|
|
6
7
|
|
|
7
8
|
## Install and build
|
|
8
9
|
|
|
@@ -34,6 +34,20 @@ end-to-end. Preserve the original code path and record required environment
|
|
|
34
34
|
variable names only; never read or copy secret values. A missing secret is a
|
|
35
35
|
follow-up for the owner, not permission to silently remove the integration.
|
|
36
36
|
|
|
37
|
+
Before any source, target, Fimo, or remote write, inspect the available source
|
|
38
|
+
read-only and follow [questions-and-improvements.md](references/questions-and-improvements.md).
|
|
39
|
+
Use the coding agent's native structured-question UI when available. Ask one
|
|
40
|
+
stacked batch of the decisions the source cannot answer instead of interrupting
|
|
41
|
+
the migration for each question. A migration request never authorizes moving
|
|
42
|
+
environment values or credentials.
|
|
43
|
+
|
|
44
|
+
When migration replaces local or bundled content with Fimo reads, preserving
|
|
45
|
+
content-delivery performance is part of fidelity. Keep build-time and
|
|
46
|
+
server-rendered content off the browser request path, use direct generated-client
|
|
47
|
+
lookups, avoid duplicate or sequential reads, and prove edit freshness. Do not
|
|
48
|
+
ask a generic optimization question or bundle a framework upgrade into the
|
|
49
|
+
migration.
|
|
50
|
+
|
|
37
51
|
## Execution environment
|
|
38
52
|
|
|
39
53
|
Run this skill from a coding-agent process that has direct access to the
|
|
@@ -139,13 +153,18 @@ report the exact failed command and setup requirement.
|
|
|
139
153
|
unwired.
|
|
140
154
|
- Prefer source code and exports over inferred crawl data. Use a public URL as
|
|
141
155
|
visual, SEO, route, and behavior evidence when better source material exists.
|
|
156
|
+
When the source defines an active CMS but its deployed records are unavailable,
|
|
157
|
+
rebuild published content from the public site only after the user explicitly
|
|
158
|
+
chooses that lower-confidence path.
|
|
142
159
|
- Read local files and exports directly and public APIs without credentials.
|
|
143
160
|
Private APIs and CMSs require a user-provided export or a narrowly scoped
|
|
144
161
|
server-side credential. Never read credentials from browser code or copy
|
|
145
162
|
them into browser code, migration artifacts, or reports. Target-project
|
|
146
163
|
authentication does not grant source access. If the source API URL or access
|
|
147
|
-
is missing or unreachable, stop and ask the
|
|
148
|
-
|
|
164
|
+
is missing or unreachable, stop and ask whether the owner wants to provide a
|
|
165
|
+
scoped export or read-only access, reconstruct the selected published routes
|
|
166
|
+
from public pages, or migrate code only and leave those records external. Never
|
|
167
|
+
infer permission to scrape, discover secrets, or contact private endpoints.
|
|
149
168
|
- Model content before page code. Generated JSON is not imported content.
|
|
150
169
|
- Model editorial content Fimo-natively: blocks for structured or repeatable
|
|
151
170
|
sections, richtext for rich bodies, references for categories, authors,
|
|
@@ -190,9 +209,11 @@ report the exact failed command and setup requirement.
|
|
|
190
209
|
create the draft evidence pack.
|
|
191
210
|
- **hybrid**: source material plus a public URL. Treat source material as
|
|
192
211
|
truth and the URL as comparison evidence.
|
|
193
|
-
4. Read `references/
|
|
212
|
+
4. Read `references/questions-and-improvements.md`, finish its read-only
|
|
213
|
+
preflight, and collect the user's decisions before setup or implementation.
|
|
214
|
+
5. Read `references/workflow.md` before implementation and create or update the
|
|
194
215
|
plain-text migration plan.
|
|
195
|
-
|
|
216
|
+
6. Load the references that apply:
|
|
196
217
|
- Coordinator ownership and dependency gates -> `references/workers.md`.
|
|
197
218
|
- Framework conversion worker -> `references/workers/framework.md`.
|
|
198
219
|
- Content planner -> `references/workers/content-planner.md`.
|
|
@@ -272,7 +293,10 @@ Commands that perform actual data writes, all requiring the linked target:
|
|
|
272
293
|
|
|
273
294
|
## Migration loop
|
|
274
295
|
|
|
275
|
-
1.
|
|
296
|
+
1. Inspect the source read-only, then ask the one preflight question batch from
|
|
297
|
+
`references/questions-and-improvements.md`. Do not initialize, link, import,
|
|
298
|
+
edit, or move environment values until the user answers every consent gate.
|
|
299
|
+
2. Run the setup path from "Initialized target precondition" and inspect the
|
|
276
300
|
initialized target before any worker edits it. A `fimo link` adoption keeps
|
|
277
301
|
the source framework; the `fimo init` / `fimo migrate init` paths choose the
|
|
278
302
|
target framework through the same canonical option as
|
|
@@ -284,7 +308,7 @@ Commands that perform actual data writes, all requiring the linked target:
|
|
|
284
308
|
copying an arbitrary template path. The target's real files and directories
|
|
285
309
|
are the authority for framework paths; do not invent a second `app/` or
|
|
286
310
|
`src/app/` tree from an example.
|
|
287
|
-
|
|
311
|
+
3. Write a short `.fimo/migration/migration-plan.md` containing the chosen
|
|
288
312
|
framework, source/target paths, worker owners, important dependencies, and
|
|
289
313
|
known questions. Start the independent workers in `references/workers.md`:
|
|
290
314
|
runtime/config, routes/SEO, content planning, and locales when those surfaces
|
|
@@ -293,25 +317,25 @@ Commands that perform actual data writes, all requiring the linked target:
|
|
|
293
317
|
all structural target code, and must pass the framework gate in
|
|
294
318
|
`references/workers/framework.md` before content data and code workers
|
|
295
319
|
start. Worker prompts and worker reports are plain text.
|
|
296
|
-
|
|
320
|
+
4. The content planner reads every content-bearing source and consumer. When
|
|
297
321
|
content comes from an API, it traces the active application client and
|
|
298
322
|
retrieves the complete accessible dataset before pushing schemas. It then
|
|
299
323
|
writes complete schemas and import payloads, recording source items,
|
|
300
324
|
consumers, batches, and unresolved behavior in the text plan rather than a
|
|
301
325
|
second orchestration format.
|
|
302
|
-
|
|
326
|
+
5. Each discovery lane reports active media in its own surface. After the
|
|
303
327
|
runtime/framework, routes/SEO, and content discovery receipts are terminal,
|
|
304
328
|
the coordinator performs one fan-in: combine and deduplicate them into the
|
|
305
329
|
complete media-obligation list. Give only that list to the media worker; do
|
|
306
330
|
not require a content-planner rescan. Once it returns every mapping, patch
|
|
307
331
|
code and payload consumers. Start data after the asset gate and content code
|
|
308
332
|
only after its imported records read back successfully.
|
|
309
|
-
|
|
333
|
+
6. Fan in the workers' plain-text reports. Compare their claimed files with
|
|
310
334
|
`git diff`, their Fimo writes with read-back CLI queries, and their source
|
|
311
335
|
coverage with the content plan. Every source item must be migrated,
|
|
312
336
|
deliberately preserved, or listed as unresolved with an owner action. A
|
|
313
337
|
report that merely says “done” is not evidence.
|
|
314
|
-
|
|
338
|
+
7. Validate against the real target with a validator that did not author the
|
|
315
339
|
changes and starts only after every other worker report is terminal: read
|
|
316
340
|
back schemas, entries, singles, labels, and assets through the CLI, build
|
|
317
341
|
the project, render the migrated routes, and verify hosting compatibility
|
|
@@ -319,13 +343,15 @@ Commands that perform actual data writes, all requiring the linked target:
|
|
|
319
343
|
when a browser is available; otherwise use deterministic
|
|
320
344
|
HTTP/header/process/log checks and mark visual proof unavailable. Then run
|
|
321
345
|
the QA gate in `references/qa.md`.
|
|
322
|
-
|
|
346
|
+
8. Write `.fimo/migration/migration-report.md` with coverage, counts, mappings,
|
|
323
347
|
unresolved items, timings from worker reports, and next actions.
|
|
324
348
|
|
|
325
349
|
## References
|
|
326
350
|
|
|
327
351
|
- `references/workflow.md` - phase order, source intake, URL artifacts, and
|
|
328
352
|
implementation loop.
|
|
353
|
+
- `references/questions-and-improvements.md` - structured preflight questions,
|
|
354
|
+
integration consent, and content-delivery performance preservation.
|
|
329
355
|
- `references/decision.md` - plain-text decision and schema guidance; no
|
|
330
356
|
decision JSON is required.
|
|
331
357
|
- `references/content.md` - CMS, entries, references, and source value rules.
|
|
@@ -359,10 +385,15 @@ Use one final status:
|
|
|
359
385
|
- **draft-only**: imports or verification are incomplete, or the user asked for
|
|
360
386
|
a draft.
|
|
361
387
|
|
|
362
|
-
Never call a migration complete when CMS entries, media mappings, forms,
|
|
363
|
-
|
|
388
|
+
Never call a migration complete when CMS entries, media mappings, forms, route
|
|
389
|
+
coverage, or migration-induced content-delivery regressions are unknown. Local
|
|
390
|
+
QA remains the acceptance gate. If
|
|
364
391
|
`fimo migrate init` created a new Fimo project, run one `fimo deploy` after QA
|
|
365
392
|
and return its preview and dashboard links; skip it when the user said not to
|
|
366
393
|
deploy or `FIMO_MIGRATION_NO_DEPLOY=1` is set. For an existing linked project,
|
|
367
394
|
offer the deployment and wait for approval. Never run `fimo publish` without an
|
|
368
395
|
explicit request.
|
|
396
|
+
|
|
397
|
+
Broader performance work and framework modernization are separate tasks. Start
|
|
398
|
+
them only when the user explicitly asks, and never use them to hide a migration
|
|
399
|
+
regression.
|