fimo 0.11.0-staging.3 → 0.11.0-staging.5
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/agent-templates/content-translator/GOAL.md +1 -1
- package/assets/skills/fimo-cli/SKILL.md +2 -2
- package/assets/skills/fimo-cli/references/agents.md +13 -10
- package/assets/skills/fimo-cli/references/branches.md +2 -2
- package/assets/skills/fimo-cli/references/content.md +2 -0
- package/assets/skills/fimo-code/references/content.md +1 -0
- package/assets/skills/fimo-code/references/setup-plain-vite.md +8 -7
- package/assets/skills/fimo-code/references/setup-react-router.md +5 -0
- package/assets/skills/fimo-studio/references/ai-chat.md +8 -2
- package/assets/skills/fimo-studio/references/custom-domains.md +1 -1
- package/assets/skills/fimo-studio/references/publish-and-deploy.md +2 -1
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +104 -107
- package/dist/runtime/app/FimoProviders.js +18 -8
- package/package.json +3 -3
- package/templates/react-router/package.json +1 -1
|
@@ -31,4 +31,4 @@ For each entry:
|
|
|
31
31
|
|
|
32
32
|
Cloud-time activation of this agent requires
|
|
33
33
|
`agents.notifications.email_recipients` to be non-empty (per ADR-0009).
|
|
34
|
-
Add at least one address before
|
|
34
|
+
Add at least one address before deploying, or the cloud trigger stays unwired.
|
|
@@ -102,7 +102,7 @@ Load the matching reference when the user's request fires its trigger. Recipes t
|
|
|
102
102
|
- "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`
|
|
103
103
|
- "Invite a collaborator / add Marc / share with client" → `references/invite.md`
|
|
104
104
|
- "Login / log out / who am I / switch organization" → `references/account.md` — note: switching **org** is `fimo orgs switch`; bare `fimo switch` switches **env** (see `references/branches.md`)
|
|
105
|
-
- "Create / scaffold / run / validate
|
|
105
|
+
- "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`
|
|
106
106
|
- "Install Fimo for my AI tool / fimo skills install / set up Claude Code or Cursor for Fimo / add an agent to this project" → `references/agent-setup.md`
|
|
107
107
|
- "Refresh / update installed Fimo skills / fimo skills sync / agent missing the latest fimo conventions" → `references/agent-setup.md`
|
|
108
108
|
- "Report a Fimo problem or blocking feature request / contact Fimo support / a Fimo API or command keeps failing / a documented argument is rejected / a supported operation needs an undocumented workaround / a Fimo API is abnormally slow / a confirmed missing capability blocks completion or forces a fragile or heavily manual workaround" → `references/support.md`
|
|
@@ -140,4 +140,4 @@ These fire at specific moments in the project lifecycle. **Surface them proactiv
|
|
|
140
140
|
- **Hardcoding tokens in flags** — use the credentials written by `fimo login` (one file per backend at `~/.config/fimo/credentials/<host>-<hash>.json`).
|
|
141
141
|
- **Treating the daily allowance as extra credits** — `fimo credits` already includes spendable daily free credits in "Available now"; the allowance section is accounting context, not an amount to add.
|
|
142
142
|
- **Trying to refill credits from the CLI** — `fimo credits` is read-only. Buying/refilling credits belongs in the billing UI for now.
|
|
143
|
-
- **`fimo agents
|
|
143
|
+
- **`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`.
|
|
@@ -9,9 +9,9 @@ The `fimo agents` namespace authors and operates **agent bundles** — multi-fil
|
|
|
9
9
|
The namespace splits cleanly in two:
|
|
10
10
|
|
|
11
11
|
- **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 `agents/<name>/`.
|
|
12
|
-
- **Cloud ops** — `run`, `
|
|
12
|
+
- **Cloud ops** — `run`, `runs`, `report`, `logs`. Env-aware, talk to the server. Default `--env` is `main`; `--project` defaults to the `projectId` in `.fimo.settings.json`.
|
|
13
13
|
|
|
14
|
-
The bundle lives in **git** (`agents/<name>/`), not the database. The DB only
|
|
14
|
+
The bundle lives in **git** (`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.
|
|
15
15
|
|
|
16
16
|
Typical flow:
|
|
17
17
|
|
|
@@ -21,8 +21,7 @@ fimo agents secrets add <name> FIRECRAWL_API_KEY # request a project secret in
|
|
|
21
21
|
fimo secrets add FIRECRAWL_API_KEY --stdin # store the hidden value in Fimo
|
|
22
22
|
fimo agents validate <name> # parse + policy + composition + requested secrets
|
|
23
23
|
fimo validate # project build and codegen checks
|
|
24
|
-
fimo deploy # push
|
|
25
|
-
fimo agents activate <name> # wire its triggers on the env (DB row)
|
|
24
|
+
fimo deploy # push to main — this also wires the declared triggers
|
|
26
25
|
fimo agents run <name> # trigger a manual run → sessionId
|
|
27
26
|
fimo agents runs <name> # see past sessions
|
|
28
27
|
fimo agents report <name> # print a run's report (the agent's final message)
|
|
@@ -63,24 +62,28 @@ integrations:
|
|
|
63
62
|
|
|
64
63
|
```bash
|
|
65
64
|
fimo agents run <name> [--env <env>] [--project <id>] [--skip-drift-check] [-C <dir>]
|
|
66
|
-
fimo agents activate <name> [--trigger <type>] [--env <env>] [--project <id>] [--quiet] [-C <dir>]
|
|
67
|
-
fimo agents deactivate <name> [--trigger <type>] [--env <env>] [--project <id>] [-C <dir>]
|
|
68
65
|
fimo agents runs <name> [--limit <n>] [--env <env>] [--project <id>] [-C <dir>]
|
|
69
66
|
fimo agents report <name> [--session <id>] [--env <env>] [--project <id>] [-C <dir>]
|
|
70
67
|
fimo agents logs <name> [--session <id>] [--project <id>] [-C <dir>]
|
|
71
68
|
```
|
|
72
69
|
|
|
73
|
-
- **`run <name>`** —
|
|
74
|
-
- **`activate <name>`** — wire the agent's triggers on an env (writes `agent_activations` rows). A `schedule` trigger creates a cron, a `webhook` trigger reserves a path, and `manual` just enables dispatch. `--trigger <type>` (`schedule` / `webhook` / `manual`) activates only that type; otherwise all declared triggers. **The bundle must be deployed first.** Cloud triggers (`schedule` / `webhook`) require `notifications.email_recipients` in `fimo-config.json` (the dash-form scaffold file; legacy `fimo.config.json` is also accepted). Capability install-consent runs unless `--quiet`.
|
|
75
|
-
- **`deactivate <name>`** — remove activation rows on an env. Idempotent. `--trigger <type>` scopes to a single trigger type.
|
|
70
|
+
- **`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 `agents/<name>/` 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 `--env` to `main`.
|
|
76
71
|
- **`runs <name>`** — list past run sessions for the agent in a compact table (id, started, duration, status, trigger, env, cost). Default `--limit 20`; `--env` filters to one env.
|
|
77
72
|
- **`report <name>`** — print a run's **report**: the agent's final message, captured when the run finishes (for a read-only agent like `seo-audit` this _is_ the audit; for a write agent it's a "what I changed" summary). With no `--session`, the most recent run for `<name>` is used (combine with `--env` to scope); `--session <id>` targets a specific run. Output is raw 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 message, 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.
|
|
78
73
|
- **`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`.
|
|
79
74
|
|
|
75
|
+
## How triggers get wired
|
|
76
|
+
|
|
77
|
+
Agents are not env-scoped: they belong to the project, are read from `main`, and their triggers are global. A branch env has no agents of its own — Studio's agents view shows main's agents whichever env you are on, and a bundle sitting only on a feature branch appears nowhere until it reaches main.
|
|
78
|
+
|
|
79
|
+
Pushing `agents/<name>/config.yaml` to `main` is the whole enablement act — `fimo deploy` does it. The server reconciles the file into its trigger rows on every push: a `schedule` trigger gets a cron, a `webhook` trigger gets its path, and `manual` becomes runnable. Removing a trigger from the file deletes it (cron torn down, path released) on the next deploy; deleting the agent's directory removes the whole deployment.
|
|
80
|
+
|
|
81
|
+
Cloud triggers (`schedule` / `webhook`) additionally require `notifications.email_recipients` in `fimo-config.json` (the dash-form scaffold file; legacy `fimo.config.json` is also accepted). Without it the trigger is recorded but deliberately left **unwired** and will not fire — `fimo agents validate` warns about this before you deploy, and the Studio agents view shows the reason afterwards.
|
|
82
|
+
|
|
80
83
|
## `-C, --cwd <dir>`
|
|
81
84
|
|
|
82
85
|
Every `fimo agents` command accepts `-C, --cwd <dir>` to point at a different project directory. For the cloud-ops commands, `--project <id>` overrides the project id otherwise read from `.fimo.settings.json`.
|
|
83
86
|
|
|
84
87
|
## Non-interactive use
|
|
85
88
|
|
|
86
|
-
|
|
89
|
+
No `fimo agents` command prompts — authoring and cloud ops both run unattended.
|
|
@@ -41,11 +41,11 @@ All of these accept the global `--env` override. `diff`, `status`, `merge`, and
|
|
|
41
41
|
|
|
42
42
|
> **`fimo switch` is the ENV switcher, not the org switcher.** To change your active organization, use `fimo orgs switch` — see `references/account.md`.
|
|
43
43
|
|
|
44
|
-
## The
|
|
44
|
+
## The 6 surfaces
|
|
45
45
|
|
|
46
46
|
`status`, `diff`, and `merge` all reason over the same per-env surfaces, in this order:
|
|
47
47
|
|
|
48
|
-
`code` · `schemas` · `content` · `translations` · `assets` · `forms`
|
|
48
|
+
`code` · `schemas` · `content` · `translations` · `assets` · `forms`
|
|
49
49
|
|
|
50
50
|
`--surface <name>` on `diff` and the per-surface flags on `status` (`--code`, `--content`, `--i18n`, `--agents`, `--assets`, `--forms`) filter to one of them.
|
|
51
51
|
|
|
@@ -34,6 +34,8 @@ The command is `fimo schemas` (plural). There is no singular `fimo schema` alias
|
|
|
34
34
|
|
|
35
35
|
All commands accept `-C, --cwd <dir>` to point at a different project directory.
|
|
36
36
|
|
|
37
|
+
Blocks schemas support at most 7 nested `blocks` levels, 40 variants in one `schema.oneOf`, and `min` or `max` values up to 200 items per blocks field. Load `fimo/references/content.md` for the complete blocks JSON shape.
|
|
38
|
+
|
|
37
39
|
Schema transitions are automatic. Adding optional fields and changing labels preserve content. A new required field backfills its `default` only where existing values need it; the push fails safely when no default can satisfy existing content. Removing a nested field or block variant removes only those values. `string` and `text` preserve values in both directions. Other primitive changes convert safe values and reject unsafe ones without changing the schema or entries. Lowering block `max` trims from the end; raising `min` fills from the blocks `default` templates. A reference target change clears its connections. Use repeatable `--rename old.path=new.path` arguments when a field moved by name so the one-time migration preserves its values; the operation is not stored in schema JSON. Collection-to-Single removes that type's entries and cleans inbound references; Single-to-collection preserves its entry. Run `fimo validate` after pushing.
|
|
38
40
|
|
|
39
41
|
## Singles CLI commands
|
|
@@ -163,6 +163,7 @@ A field may declare `showIf` (every clause must match) or `showIfAny` (one claus
|
|
|
163
163
|
|
|
164
164
|
- `blocks.schema.fields` repeats one homogeneous shape.
|
|
165
165
|
- `blocks.schema.oneOf` lets the editor choose exactly one variant per item.
|
|
166
|
+
- Blocks schemas support at most 7 nested `blocks` levels, 40 variants in one `schema.oneOf`, and `min` or `max` values up to 200 items per blocks field.
|
|
166
167
|
- Blocks always read and write arrays. A field with `max: 1` is `[]` or `[item]`, never a bare object.
|
|
167
168
|
- `min` and `max` constrain the total number of blocks. Use `min: 1` to require at least one block; `required: true` has the same minimum-one behavior.
|
|
168
169
|
- Fimo creates a stable `_key` for each item. A `oneOf` item also carries `_type`, matching the variant `uid`.
|
|
@@ -90,11 +90,11 @@ The `seo` plugin rewrites `<title>`, og, twitter, canonical tags from
|
|
|
90
90
|
|
|
91
91
|
## File: `src/main.tsx`
|
|
92
92
|
|
|
93
|
-
`FimoProviders`
|
|
94
|
-
|
|
95
|
-
`@tanstack/react-query`
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
`FimoProviders` requires a React Router `<Router>` ancestor (it reads
|
|
94
|
+
`useLocation`/`useNavigate`). It reuses a host app's
|
|
95
|
+
`@tanstack/react-query` client when one exists and supplies a stable fallback
|
|
96
|
+
for adopted SPAs. This recipe still mounts an explicit provider so the app owns
|
|
97
|
+
the shared cache and its configuration:
|
|
98
98
|
|
|
99
99
|
```tsx
|
|
100
100
|
import { FimoProviders } from 'fimo/react-router';
|
|
@@ -122,8 +122,9 @@ createRoot(document.getElementById('root')!).render(
|
|
|
122
122
|
|
|
123
123
|
`react-router` and `@tanstack/react-query` are peer dependencies of `fimo`;
|
|
124
124
|
both are in the install command above. `FimoProviders` is exported only from
|
|
125
|
-
the `fimo/react-router` adapter barrel
|
|
126
|
-
|
|
125
|
+
the `fimo/react-router` adapter barrel. Keep the explicit QueryClientProvider
|
|
126
|
+
when the app needs custom query defaults or shared cache access; adopted SPAs
|
|
127
|
+
can omit it.
|
|
127
128
|
|
|
128
129
|
## File: `src/App.tsx`
|
|
129
130
|
|
|
@@ -100,6 +100,11 @@ when to render them, and how.
|
|
|
100
100
|
|
|
101
101
|
## File: `src/root.tsx`
|
|
102
102
|
|
|
103
|
+
The explicit `QueryClientProvider` below is the canonical template shape so the
|
|
104
|
+
app can configure query defaults such as `staleTime`. Adopted SPAs can omit it:
|
|
105
|
+
`FimoProviders` reuses an ancestor client when present and supplies a stable
|
|
106
|
+
fallback otherwise.
|
|
107
|
+
|
|
103
108
|
```tsx
|
|
104
109
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
105
110
|
import { FimoProviders, FimoScripts, loadFimoMetaData, buildFimoMeta, fimoHtmlProps } from 'fimo/react-router';
|
|
@@ -9,6 +9,12 @@ The AI chat opens as a floating panel by default. You can dock it to the left or
|
|
|
9
9
|
3. Press **Enter** or click the **send button**.
|
|
10
10
|
4. The AI responds in a stream. You see tool status badges appear as it works, and the preview updates automatically.
|
|
11
11
|
|
|
12
|
+
## Responding to Choices and Forms
|
|
13
|
+
|
|
14
|
+
The AI can place choices, cards, tables, images, and contextual actions directly in its reply. Optional suggestions do not interrupt the conversation.
|
|
15
|
+
|
|
16
|
+
When the AI needs an answer before it can continue, it shows a form in the chat and waits for your response. Complete the form for a structured answer, or reply normally in the chat to answer in your own words.
|
|
17
|
+
|
|
12
18
|
## Attaching Context
|
|
13
19
|
|
|
14
20
|
Give the AI more to work with:
|
|
@@ -37,9 +43,9 @@ While the AI works, you see small badges in the chat showing what it is doing. E
|
|
|
37
43
|
|
|
38
44
|
Chat changes are prepared separately and then applied to the environment you are viewing. Most changes merge automatically.
|
|
39
45
|
|
|
40
|
-
If the project changed in the same place while the AI was working, the response shows a **Review changes** card
|
|
46
|
+
If the project changed in the same place while the AI was working, the response shows a **Review changes** card and an attention banner above the chat input. The banner remains visible when floating chat history is collapsed.
|
|
41
47
|
|
|
42
|
-
|
|
48
|
+
Choose **Auto fix** or keep chatting to let Fimo continue in the retained proposal, resolve the conflict, and retry the merge. Choose **Review manually** to inspect and resolve the proposal yourself. Discarding leaves the current environment unchanged and permanently removes the proposal.
|
|
43
49
|
|
|
44
50
|
## Tips for Better Results
|
|
45
51
|
|
|
@@ -12,7 +12,7 @@ If you're driving Fimo from the terminal, the equivalent commands are `fimo doma
|
|
|
12
12
|
## Adding a Custom Domain
|
|
13
13
|
|
|
14
14
|
1. Open **Settings** from the top navigation bar (gear icon), alongside Preview, Content, Assets, Agents, and Analytics.
|
|
15
|
-
2. In the Settings menu on the left, select **Domains** (globe icon) — listed with General
|
|
15
|
+
2. In the Settings menu on the left, select **Domains** (globe icon) — listed with General and SEO.
|
|
16
16
|
3. Click the **Add domain** button (+ icon) in the top-right of the panel. (When domain purchase is enabled, a **Buy domain** button with a shopping-cart icon sits next to it.)
|
|
17
17
|
4. A drawer opens. Type or select a domain — you can enter a subdomain or an apex domain. Domains your organization already owns appear in an autocomplete dropdown, and Fimo checks availability live as you type. For an apex domain, a checkbox lets you also redirect it to the `www` subdomain (on by default). Confirm to add it.
|
|
18
18
|
5. A DNS table appears showing the record(s) you need to add. For a **subdomain** it's a single CNAME record:
|
|
@@ -14,7 +14,7 @@ Every change you make is automatically saved to your project, but saved changes
|
|
|
14
14
|
|
|
15
15
|
To push your latest changes live, open the publish panel from the header **Publish** button and click **Publish** inside it again. It redeploys with your latest code and content.
|
|
16
16
|
|
|
17
|
-
> **Tip:**
|
|
17
|
+
> **Tip:** After completing relevant work, the AI may offer a one-click **Publish** callout in chat. It appears only when publishing is available; the header **Publish** control remains the reliable path at any time.
|
|
18
18
|
|
|
19
19
|
## Publishing Changes That Need Review
|
|
20
20
|
|
|
@@ -29,6 +29,7 @@ The header **Publish** button itself only shows the label "Publish" (or a spinne
|
|
|
29
29
|
- **"Not published yet"** — Your site has never been published. The **Publish** button inside the panel is ready to click.
|
|
30
30
|
- **"Publishing"** — Publishing is in progress. A spinner and a **Publishing** status badge show while it builds, and the button is disabled.
|
|
31
31
|
- **"Published"** — Your site is live. A **Published** status badge appears, your live URL is listed under a **Published site** heading as a clickable link, and a **Last published** date and time is shown.
|
|
32
|
+
- **"Couldn't publish · N issues"** — Project validation found issues that must be fixed first. Choose **Fix with Fimo** to send the safe issue list to the project chat and ask Fimo to repair it.
|
|
32
33
|
|
|
33
34
|
## Key Concepts
|
|
34
35
|
|