fimo 2.2.0-staging.13 → 2.2.0-staging.14
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/assets/skills/fimo-cli/SKILL.md +4 -2
- package/assets/skills/fimo-cli/references/agents.md +3 -3
- package/assets/skills/fimo-cli/references/branches.md +9 -8
- package/assets/skills/fimo-cli/references/credits.md +12 -19
- package/assets/skills/fimo-cli/references/deploy.md +6 -6
- package/assets/skills/fimo-cli/references/history.md +2 -2
- package/assets/skills/fimo-cli/references/inbox.md +86 -0
- package/assets/skills/fimo-cli/references/init.md +7 -6
- package/assets/skills/fimo-cli/references/invite.md +11 -9
- package/assets/skills/fimo-cli/references/labels.md +3 -11
- package/assets/skills/fimo-cli/references/locales.md +5 -3
- package/assets/skills/fimo-cli/references/preview.md +1 -2
- package/assets/skills/fimo-cli/references/projects.md +8 -8
- package/assets/skills/fimo-cli/references/schedules.md +2 -2
- package/assets/skills/fimo-cli/references/webhooks.md +4 -4
- package/assets/skills/fimo-code/references/frameworks/astro.md +1 -1
- package/assets/skills/fimo-code/references/frameworks/next/locales.md +2 -2
- package/assets/skills/fimo-code/references/locales.md +4 -2
- package/assets/skills/fimo-studio/references/ai-chat.md +1 -2
- package/assets/skills/fimo-studio/references/billing-and-credits.md +14 -7
- package/assets/skills/fimo-studio/references/webhooks.md +1 -1
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +194 -178
- package/dist/runtime/shared/local-runtime-env.d.ts +2 -2
- package/dist/runtime/shared/local-runtime-env.js +14 -9
- package/package.json +9 -8
- package/templates/astro/AGENTS.md +1 -1
- package/templates/astro/package.json +2 -2
- package/templates/nextjs/AGENTS.md +1 -1
- package/templates/nextjs/package.json +3 -3
- package/templates/react-router/AGENTS.md +2 -2
- package/templates/react-router/package.json +4 -4
- package/templates/sveltekit/AGENTS.md +1 -1
- package/templates/sveltekit/package.json +2 -2
- package/templates/vite/AGENTS.md +5 -1
- package/templates/vite/package.json +4 -4
|
@@ -44,7 +44,7 @@ A Fimo project is identified by `.fimo/project.json`, written by `fimo init`. Th
|
|
|
44
44
|
|
|
45
45
|
## Critical: commands target the Branch matching the current git branch
|
|
46
46
|
|
|
47
|
-
A project can have multiple **Branches** — each is a git branch _plus_ its own DB, sandbox, preview, and assets. Project-scoped commands (`deploy`, `status`, `entries`, `diff`, …) operate on the Branch matching the **current git branch**, and print a one-line banner saying which one. New projects start on `main`. Override for a single command with the canonical `--branch <name>` flag; the
|
|
47
|
+
A project can have multiple **Branches** — each is a git branch _plus_ its own DB, sandbox, preview, and assets. Project-scoped commands (`deploy`, `status`, `entries`, `diff`, …) operate on the Branch matching the **current git branch**, and print a one-line banner saying which one. New projects start on `main`. Override for a single command with the canonical `--branch <name>` flag; the removed `--env <name>` spelling is rejected. Never edit the link file to switch. The full git-shaped workflow (`branch` / `checkout` / `switch` / `pull` / `diff` / `merge` / `status` / `publish`) lives in `references/branches.md`.
|
|
48
48
|
|
|
49
49
|
## Quick Start
|
|
50
50
|
|
|
@@ -106,6 +106,7 @@ Load the matching reference when the user's request fires its trigger. Recipes t
|
|
|
106
106
|
- "Modify the URL of the website / change my project's address / connect a custom domain (e.g. blog.example.com) / rename the Fimo-provided `*.fimo.site` subdomain / buy a new domain through Fimo / set up a domain" → `references/domains.md`
|
|
107
107
|
- "Invite a collaborator / add Marc / share with client" → `references/invite.md`
|
|
108
108
|
- "Login / log out / who am I / switch organization" → `references/account.md` — note: switching **org** is `fimo orgs switch`; bare `fimo switch` changes the active **Fimo Branch** (see `references/branches.md`)
|
|
109
|
+
- "Check the Inbox / what are my agents waiting on / answer a blocked agent / an agent asked me a question / approve or deny what an agent asked for (`fimo inbox *`)" → `references/inbox.md`. Never answer on the person's behalf.
|
|
109
110
|
- "Create / scaffold / run / validate an agent / agent bundle / wire or enable its triggers / list agent templates / view agent runs, reports, or logs (`fimo agents *`)" → `references/agents.md`
|
|
110
111
|
- "Install Fimo for my agent / fimo skills install / set up Claude Code, Codex, or Cursor for Fimo" → `references/agent-setup.md`
|
|
111
112
|
- "Add, inspect, search, or run a remote MCP server / use `fimo mcp`" → `references/mcp.md`
|
|
@@ -130,6 +131,7 @@ These fire at specific moments in the project lifecycle. **Surface them proactiv
|
|
|
130
131
|
- **You need the current preview URL but haven't changed code** (opening it, screenshotting it, handing it to another tool, the previous URL expired) → `fimo preview url`, never a no-op `fimo deploy`. See `references/preview.md`.
|
|
131
132
|
- **When the user wants to try something risky / explore a redesign without touching the live site** → suggest a feature Branch: `fimo checkout -b <name>` gives an isolated Branch + DB + preview. Deploy previews there, then `fimo merge` it back and `fimo publish`. See `references/branches.md`.
|
|
132
133
|
- **After completing or safely preserving the user's main work, when a confirmed Fimo platform failure still materially blocks the task after one safe recovery attempt, or a confirmed missing capability blocks completion or forces a fragile or heavily manual workaround** → use the built-in `supportReport` tool. Do not wait for the user to ask and do not stop after only describing the gap. See `references/support.md`.
|
|
134
|
+
- **When a project agent has stopped and is waiting on a person** → `fimo inbox list --topic agent_question --unread` surfaces it. Show the stored form to the person, collect their explicit answer, and submit it with `fimo inbox answer`. See `references/inbox.md`.
|
|
133
135
|
- **After the first successful `fimo deploy`** → suggest `fimo invite` if the project involves multiple people. Typical roles: `edit` for developers/content editors, `view` or `comment` for clients/stakeholders, `full` for project leads. See `references/invite.md`.
|
|
134
136
|
- **After the automatic first-preview deploy on the create-new path, before the project has been published** → if there is no custom domain and the free default `*.fimo.site` slug still looks generated or was never explicitly chosen, offer to find a cleaner free subdomain. It needs no DNS. Never claim one without explicit user confirmation: suggest candidates, let the user choose, then rename it. Choosing the slug does not publish the site; the URL starts resolving only after the first successful `fimo deploy --publish`. Skip this nudge if the user already chose the default slug, attached a custom domain, or declined. See `references/domains.md` § Offer a cleaner default URL before first publish.
|
|
135
137
|
- **When the user wants to modify the URL of their website** → walk through `references/domains.md`. The CLI surface covers renaming the Fimo-provided subdomain (`fimo domains rename-default`, free), attaching a domain they already own (`fimo domains add`, Premium), and buying a new domain through Fimo (`fimo domains buy`, Premium).
|
|
@@ -146,6 +148,6 @@ These fire at specific moments in the project lifecycle. **Surface them proactiv
|
|
|
146
148
|
- **Adding another deploy tool (Vercel, Netlify, Cloudflare Pages)** — Fimo handles deploys; don't bolt another platform on.
|
|
147
149
|
- **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.
|
|
148
150
|
- **Hardcoding tokens in flags** — use the credentials written by `fimo login` (one file per backend at `~/.config/fimo/credentials/<host>-<hash>.json`).
|
|
149
|
-
- **Treating the daily allowance as extra credits** — `fimo credits` already includes spendable
|
|
151
|
+
- **Treating the daily allowance as extra credits** — the allowance section appears only for legacy Premium organizations, and `fimo credits` already includes its spendable credits in "Available now"; it is accounting context, not an amount to add.
|
|
150
152
|
- **Trying to refill credits from the CLI** — `fimo credits` is read-only. Buying/refilling credits belongs in the billing UI for now.
|
|
151
153
|
- **`fimo agents run` to push bundle changes** — it doesn't. The bundle reaches the server through `fimo deploy` (it lives in git, not the DB), and that push to `main` is also what wires the declared triggers. `run` dispatches the _deployed_ version. Deploy first. There is no `activate` command. See `references/agents.md`.
|
|
@@ -7,7 +7,7 @@ The `fimo agents` namespace authors and operates **agent bundles** — multi-fil
|
|
|
7
7
|
The namespace splits cleanly in two:
|
|
8
8
|
|
|
9
9
|
- **Bundle authoring** — `create`, `list-templates`, `list`, `validate`, `secrets add/remove/list`. Local config editing, no API call except the project-level validation path. Operates on the files under `.fimo/agents/<name>/` (or root `agents/<name>/` for legacy projects).
|
|
10
|
-
- **Cloud ops** — `run`, `runs`, `report`, `logs`. Branch-aware, talk to the server. Default `--branch` is `main`;
|
|
10
|
+
- **Cloud ops** — `run`, `runs`, `report`, `logs`. Branch-aware, talk to the server. Default `--branch` is `main`; `--env` is rejected as a Branch selector. `--project` defaults to the linked project in `.fimo/project.json` or legacy `.fimo.settings.json`.
|
|
11
11
|
|
|
12
12
|
The bundle lives in **git** (`.fimo/agents/<name>/`, or legacy root `agents/<name>/`), not the database. The DB only mirrors what `config.yaml` declares on `main` (which triggers are wired) plus **run sessions**. So the bundle reaches the server through `fimo deploy` — and that push to `main` is also what wires its triggers. There is no activate command: deploying IS the enablement act, and removing a trigger from `config.yaml` tears it down on the next deploy.
|
|
13
13
|
|
|
@@ -247,8 +247,8 @@ fimo agents report <name> [--session <id>] [--branch <branch>] [--project <id>]
|
|
|
247
247
|
fimo agents logs <name> [--session <id>] [--project <id>] [-C <dir>]
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
- **`run <name>`** — fire the agent's `manual` trigger on the server; prints a `sessionId` on success. Skips with `no-manual-trigger` when `config.yaml` declares none, or `trigger-not-wired` when the push-to-main sync recorded the trigger but refused to wire it (see the wiring note below). **Pre-flight drift check**: if `.fimo/agents/<name>/` (or the legacy root bundle) has uncommitted git changes, the command refuses — the server would dispatch the _deployed_ version, so deploy first. Pass `--skip-drift-check` to dispatch the deployed bundle anyway. Defaults `--branch` to `main
|
|
251
|
-
- **`runs <name>`** — list past run sessions for the agent in a compact table (id, started, duration, status, trigger, Branch, cost). Default `--limit 20`; `--branch` filters to one Branch. The response
|
|
250
|
+
- **`run <name>`** — fire the agent's `manual` trigger on the server; prints a `sessionId` on success. Skips with `no-manual-trigger` when `config.yaml` declares none, or `trigger-not-wired` when the push-to-main sync recorded the trigger but refused to wire it (see the wiring note below). **Pre-flight drift check**: if `.fimo/agents/<name>/` (or the legacy root bundle) has uncommitted git changes, the command refuses — the server would dispatch the _deployed_ version, so deploy first. Pass `--skip-drift-check` to dispatch the deployed bundle anyway. Defaults `--branch` to `main`.
|
|
251
|
+
- **`runs <name>`** — list past run sessions for the agent in a compact table (id, started, duration, status, trigger, Branch, cost). Default `--limit 20`; `--branch` filters to one Branch. The response uses the canonical `branch` field.
|
|
252
252
|
- **`report <name>`** — print a run's structured **report**: its durable outcome summary (for a read-only agent like `seo-audit` this _is_ the audit; for a write agent it's a "what I changed" summary). A run that returns plain text without calling `finish_run` receives a small structured fallback document. With no `--session`, the most recent run for `<name>` is used (combine with `--branch` to scope); `--session <id>` targets a specific run. Output is projected Markdown, so it stays readable in the terminal and pipes cleanly (e.g. `fimo agents report seo-audit | glow`). If the run hasn't finished, or produced no report, it says so (and shows the stop reason when there is one). This is the command to read what a run actually produced — see the `logs` note below.
|
|
253
253
|
- **`logs <name>`** — stream a run's log (defaults to the latest session; `--session <id>` targets one). **Note:** the log-streaming endpoint is still a server-side stub at time of writing — the command prints a placeholder rather than real log lines. To read a finished run's output today, use `report`.
|
|
254
254
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A Fimo **Branch** is a multi-surface clone of the project: a git branch **plus** its own Neon DB branch, sandbox, preview URL, and R2 asset prefix. The CLI mirrors `git` command shapes so the workflow transfers directly — same verbs, multi-surface semantics. In Project Settings, an **Environment** is a grouping policy such as Production or Preview; it is not this Branch-backed clone.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
New standalone projects start with one Branch: `main`. Linking an unversioned folder, cloning, and scaffolding read the project's default Branch from Fimo when they set up Git. You create more for feature work, deploy previews per Branch, then merge back and publish.
|
|
8
8
|
|
|
9
9
|
## The Branch model — how every command picks its target
|
|
10
10
|
|
|
@@ -15,10 +15,11 @@ fimo --branch <name> <command> # peek at another Branch for one command (does n
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
- **`--branch <name>`** is the canonical global override. `fimo --branch main status` inspects `main` while you stay checked out on your feature Branch.
|
|
18
|
-
- **`--env <name>`**
|
|
18
|
+
- **`--env <name>`** is not a Branch selector. It is rejected; use `--branch <name>`.
|
|
19
19
|
- Git-changing commands use the current branch; cross-branch status only reports the mismatch.
|
|
20
|
+
- If Git cannot name a Branch, the CLI stops instead of guessing. Check out a Branch or pass `--branch <name>`. Sandboxes receive their Branch through `FIMO_ENV`.
|
|
20
21
|
- If the git branch maps to no Fimo Branch, the CLI errors with a hint (`fimo branch` to list, `fimo branch <name>` to create) rather than guessing.
|
|
21
|
-
-
|
|
22
|
+
- The project's default Branch cannot be deleted. Existing standalone projects use **`main`**.
|
|
22
23
|
- **`release/*`** Branches are **read-only** — they're tags produced by `fimo publish`, not branches you push to. `fimo deploy` refuses them.
|
|
23
24
|
- **`prod`** is protected: it cannot be created, forked from, checked out, or deleted. It's updated by publishing, never by pushing.
|
|
24
25
|
|
|
@@ -35,9 +36,9 @@ fimo --branch <name> <command> # peek at another Branch for one command (does n
|
|
|
35
36
|
| `fimo diff [from] [to]` | `git diff` | Two-Branch diff across all surfaces. Defaults `from` = current Branch, `to` = `main`. `--surface <name>` limits to one; `--json`; `--no-color`. |
|
|
36
37
|
| `fimo status` | `git status` | Multi-surface status for the current Branch vs its parent. See below. |
|
|
37
38
|
| `fimo merge <from>` | `git merge` | Merge another Branch into the current one (multi-surface, atomic, interactive conflict resolver). See below. |
|
|
38
|
-
| `fimo publish` | — | Publish the
|
|
39
|
+
| `fimo publish` | — | Publish the synced Production source revision with a stable Fimo publication ID. See "Publishing" below. |
|
|
39
40
|
|
|
40
|
-
All of these accept the global `--branch` override
|
|
41
|
+
All of these accept the global `--branch` override. `diff`, `status`, `merge`, and `publish` additionally accept `-C, --cwd <dir>` to point at a project directory.
|
|
41
42
|
|
|
42
43
|
> **`fimo switch` changes the active Fimo Branch, not the org.** A Fimo Branch keeps its code, database, sandbox, content, and preview together. To change your active organization, use `fimo orgs switch` — see `references/account.md`.
|
|
43
44
|
|
|
@@ -97,10 +98,10 @@ Syncs the current Branch's data plane from its parent (or `--from <ancestor>`).
|
|
|
97
98
|
|
|
98
99
|
Two different "go live" mechanisms — don't confuse them:
|
|
99
100
|
|
|
100
|
-
- **`fimo publish [--label <text>] [--notes <md>]`** — publishes the
|
|
101
|
-
- **`fimo deploy --publish`** — the project-publish path. Pushes the current
|
|
101
|
+
- **`fimo publish [--label <text>] [--notes <md>]`** — publishes the synced Production source revision. Fimo assigns the immutable publication ID; the label and notes are optional annotations. `--skip-validate` is an operator override.
|
|
102
|
+
- **`fimo deploy --publish`** — the project-publish path. Pushes the current Production source code and flips the project live in one shot. See `references/deploy.md`.
|
|
102
103
|
|
|
103
|
-
Use `fimo publish` when
|
|
104
|
+
Use `fimo publish` when the Production source Branch is already synced; use `fimo deploy --publish` when the local revision still needs to be pushed first. Both only run from the configured Production source Branch. Existing projects use `main`.
|
|
104
105
|
|
|
105
106
|
## Anti-patterns
|
|
106
107
|
|
|
@@ -13,31 +13,29 @@ This command is **project-scoped but not Branch-scoped**. It does not depend on
|
|
|
13
13
|
|
|
14
14
|
## Pretty Output
|
|
15
15
|
|
|
16
|
-
The human output has
|
|
16
|
+
The human output has two sections:
|
|
17
17
|
|
|
18
18
|
- **Available now** - total spendable credits across all usable buckets, plus a status of `OK`, `Low`, or `Unavailable`.
|
|
19
|
-
- **Breakdown (included in available now)** - daily free, monthly, purchased, and awarded buckets. These are components of the total, not extra credits to add again.
|
|
20
|
-
- **Daily allowance (not additional balance)** - period cap, period usage, remaining period allowance, and the maximum daily grant. This explains plan/accounting limits and can be absent.
|
|
19
|
+
- **Breakdown (included in available now)** - daily free, monthly, purchased, and awarded buckets. These are components of the total, not extra credits to add again. Daily free is 0 except for organizations on the legacy Premium plan, the only plan with daily credits.
|
|
21
20
|
|
|
22
21
|
Example:
|
|
23
22
|
|
|
24
23
|
```txt
|
|
25
24
|
Available now
|
|
26
|
-
|
|
25
|
+
11,830 credits
|
|
27
26
|
Status: OK
|
|
28
27
|
|
|
29
28
|
Breakdown (included in available now)
|
|
30
|
-
Daily free
|
|
29
|
+
Daily free 0
|
|
31
30
|
Monthly 8,000
|
|
32
31
|
Purchased 3,000
|
|
33
32
|
Awarded 830
|
|
34
|
-
|
|
35
|
-
Daily allowance (not additional balance)
|
|
36
|
-
Used this period: 4,400 / 5,000
|
|
37
|
-
Remaining period: 600
|
|
38
|
-
Daily grant: up to 1,000 / day
|
|
39
33
|
```
|
|
40
34
|
|
|
35
|
+
Organizations on the legacy Premium plan also show a "Daily allowance (not
|
|
36
|
+
additional balance)" section. It is accounting context already included in
|
|
37
|
+
"Available now", never extra credits to add.
|
|
38
|
+
|
|
41
39
|
## JSON Output
|
|
42
40
|
|
|
43
41
|
Use `--json` when another tool or agent needs to parse the balance:
|
|
@@ -51,29 +49,24 @@ Use `--json` when another tool or agent needs to parse the balance:
|
|
|
51
49
|
"projectId": "project_123",
|
|
52
50
|
"organizationId": "org_123",
|
|
53
51
|
"balance": {
|
|
54
|
-
"totalAvailable":
|
|
52
|
+
"totalAvailable": 11830,
|
|
55
53
|
"nearLimit": false,
|
|
56
54
|
"canUseAi": true,
|
|
57
55
|
"buckets": {
|
|
58
|
-
"dailyFreeAvailable":
|
|
56
|
+
"dailyFreeAvailable": 0,
|
|
59
57
|
"monthlyAvailable": 8000,
|
|
60
58
|
"purchasedAvailable": 3000,
|
|
61
59
|
"awardedAvailable": 830
|
|
62
60
|
}
|
|
63
61
|
},
|
|
64
62
|
"allowances": {
|
|
65
|
-
"dailyCredits":
|
|
66
|
-
"periodCap": 5000,
|
|
67
|
-
"dailyGrant": 1000,
|
|
68
|
-
"usedThisPeriod": 4400,
|
|
69
|
-
"remainingThisPeriod": 600
|
|
70
|
-
}
|
|
63
|
+
"dailyCredits": null
|
|
71
64
|
}
|
|
72
65
|
}
|
|
73
66
|
}
|
|
74
67
|
```
|
|
75
68
|
|
|
76
|
-
`allowances.dailyCredits`
|
|
69
|
+
`allowances.dailyCredits` is `null` except for organizations on the legacy Premium plan, the only plan with a daily allowance. Do not derive spendability from the allowance alone; use `balance.canUseAi`, `balance.nearLimit`, and `balance.totalAvailable`.
|
|
77
70
|
|
|
78
71
|
## When To Run It
|
|
79
72
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
> **Local vs hosted.** The local dev server is localhost only. The Fimo **dashboard preview** and the authenticated **project-member preview URL** are served by the deployed sandbox — so if the developer wants to see the site in the dashboard or send another project member a link, that requires a `fimo deploy`.
|
|
6
6
|
|
|
7
|
-
`fimo deploy` uses the current Branch. New projects start on `main`; `release/*` is read-only, and `--publish` only runs from
|
|
7
|
+
`fimo deploy` uses the current Branch. New projects start on `main`; `release/*` is read-only, and `--publish` only runs from the project's configured Production source Branch. See `references/branches.md` for the multi-Branch workflow.
|
|
8
8
|
|
|
9
9
|
Before deploying, Fimo fast-forwards a clean checkout that is behind and stops on dirty-behind or diverged branches. This syncs the whole branch, including config commits from Studio or locale commands.
|
|
10
10
|
|
|
@@ -20,7 +20,7 @@ fimo deploy -m "<commit message>" --publish # also publish a new live version
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
- **`fimo deploy`** — commits pending changes, pushes to the current Branch, syncs that Branch's preview sandbox, and links to the Preview and Fimo dashboard.
|
|
23
|
-
- **`fimo deploy --publish`** — same as above, then triggers a live publish and prints the live URL. Runs from
|
|
23
|
+
- **`fimo deploy --publish`** — same as above, then triggers a live publish and prints the live URL. Runs from the configured Production source Branch only. **Only use `--publish` when the user signals "ship it"** — first-time site completion, or an explicit "publish" / "go live" request. Otherwise stick to plain `fimo deploy`. (For a _versioned_ prod release, use `fimo publish` instead — see below.)
|
|
24
24
|
- **`-m`** is the commit message used when there are uncommitted local changes; required in non-interactive shells. Omit if the working tree is already clean.
|
|
25
25
|
- **`--no-restart`** — tells the sandbox to skip the dev-server restart and let Vite HMR pick up the change. Shaves ~3s per deploy. See "Skipping the dev-server restart" below for when it's safe.
|
|
26
26
|
|
|
@@ -121,10 +121,10 @@ There's nothing special about this — it's the same `fimo deploy` you'd run lat
|
|
|
121
121
|
|
|
122
122
|
Two different "go live" mechanisms — pick deliberately:
|
|
123
123
|
|
|
124
|
-
- **`fimo deploy --publish`** — push what's on
|
|
125
|
-
- **`fimo publish [--label <text>] [--notes <md>]`** — publish the
|
|
124
|
+
- **`fimo deploy --publish`** — push what's on the Production source Branch now and flip the project live in one shot. The simple "ship it" path. Runs from that Branch only.
|
|
125
|
+
- **`fimo publish [--label <text>] [--notes <md>]`** — publish the synced Production source revision without pushing. Fimo assigns the immutable publication ID; a label and notes are optional human annotations. See `references/branches.md`.
|
|
126
126
|
|
|
127
|
-
When unsure, use `fimo deploy --publish` so the local revision is pushed before it goes live. Use `fimo publish` when
|
|
127
|
+
When unsure, use `fimo deploy --publish` so the local revision is pushed before it goes live. Use `fimo publish` when the Production source Branch is already synced.
|
|
128
128
|
|
|
129
129
|
## Markdown for AI agents
|
|
130
130
|
|
|
@@ -157,7 +157,7 @@ fimo deploy
|
|
|
157
157
|
|
|
158
158
|
- Source of truth is this git repo.
|
|
159
159
|
- **Never** edit `.fimo/project.json`; it is generated by `fimo init`.
|
|
160
|
-
- Each Branch deploys to its own preview sandbox; `--publish` and `fimo publish` run from
|
|
160
|
+
- Each Branch deploys to its own preview sandbox; `--publish` and `fimo publish` run from the configured Production source Branch only. See `references/branches.md`.
|
|
161
161
|
|
|
162
162
|
## After the first successful deploy
|
|
163
163
|
|
|
@@ -18,8 +18,8 @@ fimo history restore <version-id>
|
|
|
18
18
|
|
|
19
19
|
Studio chat can run `history list` and `history show`. Create and restore remain available through the standalone CLI and Studio's History page.
|
|
20
20
|
|
|
21
|
-
Use the global `--branch <name>` option to target a different Branch. The
|
|
22
|
-
`--env <name>` spelling
|
|
21
|
+
Use the global `--branch <name>` option to target a different Branch. The removed
|
|
22
|
+
`--env <name>` spelling is rejected as a Branch selector. Use `--project <id>` when
|
|
23
23
|
there is no local `.fimo/project.json`.
|
|
24
24
|
|
|
25
25
|
## Pagination and usage
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Inbox
|
|
2
|
+
|
|
3
|
+
The Inbox is what a project's agents tell the people on it: a run finished, a
|
|
4
|
+
run left work for review, a merge conflicted, or a run stopped and is waiting
|
|
5
|
+
for a decision. Only the last one can be acted on from the CLI.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
fimo inbox list # unread first, then read
|
|
9
|
+
fimo inbox list --topic agent_question --unread
|
|
10
|
+
fimo inbox get <notification-id> # the notification, plus the stored form when it is a question
|
|
11
|
+
fimo inbox answer <notification-id> --body '<compact answer json>'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
A notification id is the only id you ever hold. The question, its thread, the
|
|
15
|
+
run it continues, and the Branch that run kept alive are resolved for you.
|
|
16
|
+
|
|
17
|
+
Use `--project <id>` when there is no local `.fimo/project.json`. `--limit`,
|
|
18
|
+
`--cursor`, and `--all-pages` page the list. `--archived` reads archived items;
|
|
19
|
+
`--unread` stays in the unread stream instead of continuing into read items.
|
|
20
|
+
|
|
21
|
+
## Answering is the person's decision, not yours
|
|
22
|
+
|
|
23
|
+
**Never answer a question on someone's behalf.** A question exists because a run
|
|
24
|
+
needed a human decision it could not make correctly. Answer only what the person
|
|
25
|
+
in front of you explicitly chose.
|
|
26
|
+
|
|
27
|
+
1. `fimo inbox list --topic agent_question --unread --json` to find waiting
|
|
28
|
+
questions, then `fimo inbox get <notification-id> --json` for the one to
|
|
29
|
+
answer. `data.question.form` is the stored form, verbatim.
|
|
30
|
+
2. **Reproduce that form in the interface you are in** — the native form or
|
|
31
|
+
choice UI your harness offers, or a plain enumerated prompt when it offers
|
|
32
|
+
none. Keep the title, the description, the step order, the wording of every
|
|
33
|
+
question, every option label, the recommended option where one is marked,
|
|
34
|
+
image labels and URLs, and each capability's reason. The person is deciding
|
|
35
|
+
on what the agent actually asked, not on your summary of it.
|
|
36
|
+
3. Collect only explicit answers. Do not default a step, infer one from earlier
|
|
37
|
+
conversation, or fill a step the person skipped. If the person already gave a
|
|
38
|
+
complete explicit answer, do not ask again — use what they said.
|
|
39
|
+
4. **Never infer capability approval.** Selecting nothing on a capabilities step
|
|
40
|
+
is a deliberate deny-all, and omitting the step entirely is refused by the
|
|
41
|
+
CLI rather than read as a denial.
|
|
42
|
+
5. Pass their notes through verbatim. The note is the one part of the answer
|
|
43
|
+
only they could write.
|
|
44
|
+
6. Call `fimo inbox answer` once.
|
|
45
|
+
|
|
46
|
+
## The compact answer
|
|
47
|
+
|
|
48
|
+
Keyed by the step ids `inbox get` returned, in any order, one entry per step:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"answers": [
|
|
53
|
+
{ "stepId": "direction", "selected": ["Editorial studio"], "note": "Keep it calm." },
|
|
54
|
+
{ "stepId": "access", "selected": [] },
|
|
55
|
+
{ "stepId": "notes", "note": "Ship on Friday." }
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- `selected` holds option **labels**, exactly as the form shows them.
|
|
61
|
+
- `note` is free text. A step that offers options may be answered with a note
|
|
62
|
+
alone, with a selection alone, or with both.
|
|
63
|
+
- A written step (`"type": "text"`) is answered with `note` only.
|
|
64
|
+
- A capabilities step needs `selected`, empty or not. `[]` approves none.
|
|
65
|
+
- Every step needs its own entry. Nothing is answered by omission.
|
|
66
|
+
|
|
67
|
+
`--file <path>` and `--stdin` read the same JSON from a file or a pipe.
|
|
68
|
+
|
|
69
|
+
## What the CLI refuses
|
|
70
|
+
|
|
71
|
+
| Code | Why |
|
|
72
|
+
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `INBOX_ANSWER_INVALID` | Unknown or missing step, unoffered option, too many selections on a single-select, a written step answered by picking, or a capabilities step with no explicit decision |
|
|
74
|
+
| `INBOX_NOT_A_QUESTION` | The notification is a run outcome, a review, or a conflict — there is nothing to answer |
|
|
75
|
+
| `INBOX_QUESTION_CLOSED` | Already answered, expired, cancelled, or superseded |
|
|
76
|
+
| `INBOX_UNKNOWN_TOPIC` | `--topic` is not one of the four Inbox topics |
|
|
77
|
+
| `INBOX_INVALID_CURSOR` | `--cursor` was not the `nextCursor` from a previous page |
|
|
78
|
+
| `INBOX_NOT_FOUND` | No notification with that id is addressed to you in this project |
|
|
79
|
+
|
|
80
|
+
A question is answered once. Answering it starts exactly one continuation run,
|
|
81
|
+
and re-sending the same answer never starts a second one.
|
|
82
|
+
|
|
83
|
+
## What the CLI does not do
|
|
84
|
+
|
|
85
|
+
Marking read, archiving, restoring, reviewing retained work, and resolving merge
|
|
86
|
+
conflicts happen in the Fimo Inbox UI. `fimo inbox` reads and answers.
|
|
@@ -23,7 +23,7 @@ Generated pnpm projects pin `pnpm@10.26.0` and carry project-owned `pnpm-workspa
|
|
|
23
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
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
25
|
| `--branch <name>` | no | Branch to check out when linking an existing project (defaults to `main`). |
|
|
26
|
-
| `--env <name>` | no |
|
|
26
|
+
| `--env <name>` | no | Rejected as a Branch selector; use `--branch <name>`. |
|
|
27
27
|
| `--framework <framework>` | no | New-project scaffold: `nextjs` (App Router, default), `react-router`, `vite` (React SPA), `astro`, or `sveltekit`. Existing repositories are preserved. |
|
|
28
28
|
| `--package-manager <pm>` | no | `npm` \| `pnpm` \| `yarn` \| `bun`. |
|
|
29
29
|
| `--install` / `--no-install` | yes in non-TTY | Install deps after checkout (or skip it). |
|
|
@@ -81,10 +81,11 @@ select it with `--framework react-router` when a project should use React Router
|
|
|
81
81
|
instead of the default Next.js App Router shell.
|
|
82
82
|
|
|
83
83
|
Set the primary locale from the request: when several are explicitly named, use the first as default;
|
|
84
|
-
if none is requested, keep `en` and tell the user.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
if none is requested, keep `en` and tell the user. After init, load `references/locales.md` and use its
|
|
85
|
+
typed lifecycle commands to configure the locale set and default. Then update the framework-native locale
|
|
86
|
+
boundary, matcher, and HTML language default. Do not keep `en` solely because the shell starts there.
|
|
87
|
+
Do not add `/en`, a language picker, global path-prefix configuration, or localized schemas unless the
|
|
88
|
+
site needs them.
|
|
88
89
|
After init, load the project rules and `fimo-code` to build the requested site.
|
|
89
90
|
If you replace a shell's code with a site that uses another framework or none,
|
|
90
91
|
fix `runtime.framework` in the same change
|
|
@@ -94,7 +95,7 @@ For `--agents`, pass the AI tool you're running in: `--agents=claude-code` for C
|
|
|
94
95
|
|
|
95
96
|
## Setting up a project by ID
|
|
96
97
|
|
|
97
|
-
Pass `--project-id <id>` to set up a known Fimo project. If the project has no code yet — for example, one just created in Fimo Studio — `init` scaffolds a fresh site into it and pushes the initial commit: the same create-new path, linked to the existing ID. If the project already has code, `init` clones it into `[dir]`, like `fimo clone`. Use `--branch <name>` to check out a specific Branch (defaults to `main`)
|
|
98
|
+
Pass `--project-id <id>` to set up a known Fimo project. If the project has no code yet — for example, one just created in Fimo Studio — `init` scaffolds a fresh site into it and pushes the initial commit: the same create-new path, linked to the existing ID. If the project already has code, `init` clones it into `[dir]`, like `fimo clone`. Use `--branch <name>` to check out a specific Branch (defaults to `main`). Without `--project-id`, `fimo init` creates a new project.
|
|
98
99
|
|
|
99
100
|
## Linking an existing local application
|
|
100
101
|
|
|
@@ -11,7 +11,7 @@ Invite collaborators to your Fimo organization or project. After deploying a web
|
|
|
11
11
|
Typical scenarios where inviting is appropriate:
|
|
12
12
|
|
|
13
13
|
- Multi-person projects (agencies, teams)
|
|
14
|
-
- Client hand-off (invite client as `view`
|
|
14
|
+
- Client hand-off (invite client as `view`)
|
|
15
15
|
- Content editors (invite as `edit` for CMS access)
|
|
16
16
|
- Developers (invite as `edit` or `full`)
|
|
17
17
|
|
|
@@ -30,12 +30,14 @@ fimo invite --project <project-id> --email "john@acme.com" --role full
|
|
|
30
30
|
|
|
31
31
|
Project roles:
|
|
32
32
|
|
|
33
|
-
| Role
|
|
34
|
-
|
|
|
35
|
-
| `view`
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
|
|
33
|
+
| Role | Access Level | Use Case |
|
|
34
|
+
| ------ | --------------------------------------------- | -------------------------------- |
|
|
35
|
+
| `view` | Read-only | Clients, stakeholders, reviewers |
|
|
36
|
+
| `edit` | Edit code, content, assets, use AI chat | Developers, content editors |
|
|
37
|
+
| `full` | Full access including settings and publishing | Project leads |
|
|
38
|
+
|
|
39
|
+
`comment` is no longer offered. Fimo has no comment system, so it granted exactly what `view` grants. It is still
|
|
40
|
+
accepted by `--role` and still held by anyone already assigned it, but do not hand it out — use `view`.
|
|
39
41
|
|
|
40
42
|
## Invite to an organization
|
|
41
43
|
|
|
@@ -76,8 +78,8 @@ Next steps:
|
|
|
76
78
|
# Give client view-only access
|
|
77
79
|
fimo invite --email "client@company.com" --role view
|
|
78
80
|
|
|
79
|
-
#
|
|
80
|
-
fimo invite --email "
|
|
81
|
+
# Reviewers get the same read-only access
|
|
82
|
+
fimo invite --email "reviewer@company.com" --role view
|
|
81
83
|
```
|
|
82
84
|
|
|
83
85
|
### Adding a developer
|
|
@@ -27,18 +27,10 @@ There is no `fimo translations` command. Use `fimo labels`.
|
|
|
27
27
|
|
|
28
28
|
## Locale config
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"i18n": {
|
|
35
|
-
"defaultLocale": "en",
|
|
36
|
-
"locales": ["en"]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
```
|
|
30
|
+
Use `references/locales.md` to change the supported locales or default.
|
|
40
31
|
|
|
41
|
-
- `defaultLocale`
|
|
32
|
+
- `fimo validate` reads `defaultLocale` from the synchronized local config so it can run without a Fimo session.
|
|
33
|
+
- Label writes with no `--locale` leave the locale unset; the selected Branch API resolves its configured default.
|
|
42
34
|
- `locales` is the enabled locale list and must include `defaultLocale`. Do not add non-default locales unless the user asks for multiple languages, localized routes, translations, or a specific locale.
|
|
43
35
|
- If multiple locales are configured, create or update label values for every configured locale.
|
|
44
36
|
- For a non-default locale, pass `--locale <locale>` explicitly.
|
|
@@ -13,13 +13,13 @@ fimo locales set-default es --yes --json
|
|
|
13
13
|
fimo locales remove es --yes --json
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
In a linked project, change the locale set or default only through these commands or Studio Settings. Never edit `i18n.defaultLocale` or `i18n.locales` directly. Studio chat can run `locales list`.
|
|
17
17
|
|
|
18
18
|
These commands update the selected Branch through the locale lifecycle API. The API commits `.fimo/config.json` to the Fimo Branch, then the CLI synchronizes the **whole local branch** to that commit. They refuse a dirty config, a local-ahead branch, or a diverged branch before applying the remote change. `--yes` bypasses only the explanatory prompt.
|
|
19
19
|
|
|
20
20
|
If a mutation exits with code `2` and `data.code` is `LOCALE_APPLIED_SYNC_REQUIRED`, the remote operation succeeded (`data.applied` is `true`) but the local fast-forward did not. **Do not retry the locale command.** Run the commands in `data.sync.recovery`, resolve the checkout, and confirm with `fimo status` or `fimo locales list`.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
The synchronized `.fimo/config.json` remains the application runtime's declarative locale configuration:
|
|
23
23
|
|
|
24
24
|
```jsonc
|
|
25
25
|
{
|
|
@@ -36,6 +36,8 @@ Edit `.fimo/config.json` only for declarative locale and route metadata:
|
|
|
36
36
|
- New projects do not need a global routing strategy. The route contract declares locale placement with `/:locale`; legacy `i18n.routing.strategy` values are read only for compatibility while migrating.
|
|
37
37
|
- If multiple locales are configured, create or update labels and localized content for every configured locale. Create schemas with `i18n: { "enabled": false }` only once.
|
|
38
38
|
|
|
39
|
+
Edit application-owned settings such as `routes` directly in `.fimo/config.json`. Locale membership and the default use the lifecycle commands above because they must update the selected Fimo Branch and local checkout together.
|
|
40
|
+
|
|
39
41
|
`fimo locales remove` permanently deletes that locale's stored entries and labels.
|
|
40
42
|
|
|
41
43
|
## Validate
|
|
@@ -108,7 +110,7 @@ Neither Astro nor Next supports an optional single-segment filesystem folder. As
|
|
|
108
110
|
|
|
109
111
|
## Migrate An Existing Locale System
|
|
110
112
|
|
|
111
|
-
Inspect the existing locale provider, route table, switcher, redirects, and public URLs before
|
|
113
|
+
Inspect the existing locale provider, route table, switcher, redirects, and public URLs before changing locale behavior. Preserve working URL behavior during the migration.
|
|
112
114
|
|
|
113
115
|
Preserve the existing locale provider, router, switcher, redirects, and public URLs. Next.js projects run `fimo skills get fimo-code --ref frameworks/next/locales`; React Router projects load the React Router setup reference and its focused route-ownership migration when upgrading; Astro projects run `fimo skills get fimo-code --ref frameworks/astro` and pass the page-resolved locale into server reads and `getLabels`.
|
|
114
116
|
|
|
@@ -14,7 +14,7 @@ fimo preview url --all # print every destination a
|
|
|
14
14
|
curl -L "$(fimo preview url)" # fetch the raw sandbox preview
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
`--env <name>`
|
|
17
|
+
`--env <name>` is rejected as a Branch selector; use `--branch <name>`. The JSON envelope carries the canonical `branch` field and may include a deprecated `env` compatibility duplicate. Studio deep links still use the `/env/` path, which redirects to `/branch/`.
|
|
18
18
|
|
|
19
19
|
## Human and machine behavior
|
|
20
20
|
|
|
@@ -32,7 +32,6 @@ curl -L "$(fimo preview url)" # fetch the raw sandbox pre
|
|
|
32
32
|
"project_id": "prj_abc",
|
|
33
33
|
"branch": "main",
|
|
34
34
|
"env": "main",
|
|
35
|
-
"env": "main",
|
|
36
35
|
"preview_url": "https://fimo.ai/preview/prj_abc/main",
|
|
37
36
|
"sandbox_url": "https://preview.provider.example/session",
|
|
38
37
|
"sandbox_expires_at": "2026-08-20T18:42:00.000Z",
|
|
@@ -9,16 +9,16 @@ fimo projects list [--org <id>] # list projects in an org (defau
|
|
|
9
9
|
fimo projects create [dir] [--org <id>] [--framework react-router|astro|nextjs|sveltekit] [--install|--no-install]
|
|
10
10
|
fimo projects clone [projectId] [dir] [--branch <name>] # clone an existing project locally
|
|
11
11
|
fimo projects delete [projectId] [-C <dir>] [-y] # delete (defaults to current project)
|
|
12
|
-
fimo projects publish [projectId] [-C <dir>] # make the project live
|
|
12
|
+
fimo projects publish [projectId] [-C <dir>] # make the project live from its Production source Branch
|
|
13
13
|
fimo projects unpublish [projectId] [-C <dir>] # take the project offline
|
|
14
14
|
fimo projects rename <name> [projectId] [-C <dir>] # set seo.siteName in the linked project config
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
- **`list`** — projects you can see in the org. Live projects are marked.
|
|
18
18
|
- **`create`** — identical to `fimo init` (create-new path); see `references/init.md`.
|
|
19
|
-
- **`clone`** — clone a remote Fimo project's git repo to your machine and write the local `.fimo/project.json` and agent files. Use `fimo clone <projectId>` when scripting or when the ID is known. In an interactive terminal, bare `fimo clone` opens a project picker for the active org; JSON mode and non-TTY shells require an explicit project ID and fail fast instead of prompting. By default it clones `main`; pass `--branch <name>` to clone a specific Branch. The
|
|
19
|
+
- **`clone`** — clone a remote Fimo project's git repo to your machine and write the local `.fimo/project.json` and agent files. Use `fimo clone <projectId>` when scripting or when the ID is known. In an interactive terminal, bare `fimo clone` opens a project picker for the active org; JSON mode and non-TTY shells require an explicit project ID and fail fast instead of prompting. By default it clones `main`; pass `--branch <name>` to clone a specific Branch. The removed `--env <name>` spelling is rejected as a Branch selector. The target directory defaults to the project display name/name, or pass `[dir]` explicitly.
|
|
20
20
|
- **`delete`** — destructive; prompts unless `-y`. Removes the remote project.
|
|
21
|
-
- **`publish` / `unpublish`** — toggle the project's public visibility. `publish` flips the
|
|
21
|
+
- **`publish` / `unpublish`** — toggle the project's public visibility. `publish` flips the configured Production source state live (the same "go live" as `fimo deploy --publish`, minus the git push).
|
|
22
22
|
- **`rename`** — edits only the linked local project's `seo.siteName`. It does not commit or deploy. It requires a project marker in the cwd, and if you pass a `[projectId]` that doesn't match the linked project it errors and exits 1 (so you can't rename a different project). Later remote config commands may require reconciliation while the local config is dirty. Finish your local edits, then explicitly run `fimo deploy --no-wait` when ready for a quick sync.
|
|
23
23
|
|
|
24
24
|
## Top-level clone shortcut
|
|
@@ -43,10 +43,10 @@ fimo rename "<Site Name>" # local edit: set seo.siteName in the project c
|
|
|
43
43
|
|
|
44
44
|
## Publish commands
|
|
45
45
|
|
|
46
|
-
| Command | Effect
|
|
47
|
-
| ----------------------- |
|
|
48
|
-
| `fimo deploy --publish` | Push current
|
|
49
|
-
| `fimo projects publish` | Flip the project live (no git push).
|
|
50
|
-
| `fimo publish` | Flip the
|
|
46
|
+
| Command | Effect |
|
|
47
|
+
| ----------------------- | -------------------------------------------------------------------------- |
|
|
48
|
+
| `fimo deploy --publish` | Push the current Production source + flip the project live in one shot. |
|
|
49
|
+
| `fimo projects publish` | Flip the project live (no git push). |
|
|
50
|
+
| `fimo publish` | Flip the synced Production source revision live; optional label and notes. |
|
|
51
51
|
|
|
52
52
|
See `references/deploy.md` and `references/branches.md` for the full picture.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`fimo schedules` manages recurring commands for one project Branch. It uses the
|
|
4
4
|
current checkout Branch by default, or the Branch passed with `--branch <name>`.
|
|
5
|
-
The
|
|
5
|
+
The removed `--env <name>` spelling is rejected as a Branch selector.
|
|
6
6
|
|
|
7
7
|
The command starts in that Branch's sandbox. Commands can still target another
|
|
8
8
|
Branch explicitly, for example with `fimo schemas list --branch preview`.
|
|
@@ -72,6 +72,6 @@ All schedule commands support the CLI's global `--json` mode. List, detail, and
|
|
|
72
72
|
|
|
73
73
|
## Notes
|
|
74
74
|
|
|
75
|
-
- Every operation is scoped to the active Branch unless `--branch`
|
|
75
|
+
- Every operation is scoped to the active Branch unless `--branch` is passed.
|
|
76
76
|
- Pausing stops future cron runs. It does not delete history.
|
|
77
77
|
- A failed or skipped manual run exits non-zero with its run ID and an exact `runs show` command for inspecting detail.
|
|
@@ -28,12 +28,13 @@ Run this before writing a custom payload. The list shows supported event types,
|
|
|
28
28
|
- Publish: `publish.started`, `publish.succeeded`, `publish.failed`, `publish.unpublished`
|
|
29
29
|
- Agents: run started/completed/failed/cancelled and review requested/resolved
|
|
30
30
|
- Analytics: `analytics.report_ready`
|
|
31
|
-
- Media: uploaded/updated/deleted
|
|
31
|
+
- Media: uploaded/updated/deleted
|
|
32
32
|
- Entries: `entry.changed`
|
|
33
33
|
- Domains: `domain.created`, `domain.deleted`
|
|
34
34
|
- Labels: `label.changed`
|
|
35
35
|
- Locales: `locale.created`, `locale.default_changed`, `locale.deleted`
|
|
36
|
-
-
|
|
36
|
+
- Branch restore: `branch.restored`
|
|
37
|
+
- Existing lifecycle wire names: `environment.created`, `environment.deleted`, `environment.merged`
|
|
37
38
|
|
|
38
39
|
Do not guess variable paths. The common envelope is:
|
|
39
40
|
|
|
@@ -110,9 +111,8 @@ Available filters are event-specific:
|
|
|
110
111
|
- `--agent <name>` for agent events
|
|
111
112
|
- `--media-type <image|video|audio|document|other>` for media events
|
|
112
113
|
- `--action <created|updated|deleted>`, `--content-type <name>`, and `--locale <locale>` for `entry.changed`
|
|
113
|
-
- `--debounce-changes <immediate|5s|30s|1m>` for direct `entry.changed` delivery grouping
|
|
114
114
|
|
|
115
|
-
`entry.changed` represents content
|
|
115
|
+
`entry.changed` represents content committed in the selected Environment. Each committed write sends one delivery whose `data.changes` lists every affected entry; environment merges arrive the same way with `reason: "environment_merge"`. Operations above the delivery batch size share an `operationId` and include `{ index, total }` batch metadata. Retries resend the same delivery (same event `id`), never a new one. Every event includes scalar `environment` and `branch` context and keeps the legacy Branch value at `event.env.name`. Publish events always report Production on `main`.
|
|
116
116
|
|
|
117
117
|
## Inspect before depending on it
|
|
118
118
|
|
|
@@ -115,7 +115,7 @@ export async function getStaticPaths() {
|
|
|
115
115
|
|
|
116
116
|
Configure Astro i18n from `.fimo/config.json#i18n` and use `Astro.currentLocale` for content reads, `getLabels({ locale })`, and `<html lang>`. The standard starter keeps the configured default locale unprefixed and prefixes the others. Existing applications may instead resolve locale through middleware, domains, cookies, or another application-owned strategy. Astro needs no Fimo locale provider. Ownership rules: `references/locales.md`.
|
|
117
117
|
|
|
118
|
-
The new-project shell pairs unprefixed default-locale pages with a parallel `[locale]` tree because Astro has no optional single-segment page filename. Add locales
|
|
118
|
+
The new-project shell pairs unprefixed default-locale pages with a parallel `[locale]` tree because Astro has no optional single-segment page filename. Add locales through the `fimo-cli` locale workflow; Astro's native i18n router reads the synchronized config and validates the prefixed tree. Route metadata uses `/:locale` with `params.locale.optional: true`; Astro page files remain authoritative.
|
|
119
119
|
|
|
120
120
|
## Studio route catalog
|
|
121
121
|
|