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.
@@ -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 running `fimo agents activate`.
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 / activate / deactivate an agent / agent bundle / list agent templates / view agent runs, reports, or logs (`fimo agents *`)" → `references/agents.md`
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 activate` / `run` to push bundle changes** — they don't. The bundle reaches the server through `fimo deploy` (it lives in git, not the DB). `activate` only writes activation rows; `run` dispatches the _deployed_ version. Deploy first. See `references/agents.md`.
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`, `activate`, `deactivate`, `runs`, `report`, `logs`. Env-aware, talk to the server. Default `--env` is `main`; `--project` defaults to the `projectId` in `.fimo.settings.json`.
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 holds **activations** (which triggers are wired on which env) and **run sessions**. So the bundle reaches the server through `fimo deploy`, not through `activate`/`run`.
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 the bundle to the env's git branch
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>`** — trigger a real manual run on the server; prints a `sessionId` on success (or a skip reason when the server short-circuits). **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`.
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
- Authoring commands (`list-templates`, `list`, `validate`) never prompt. `create` and `activate` run an install-consent flow when the bundle declares capabilities — pass `--quiet` to skip it in scripts / CI (critical capabilities still abort).
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 7 surfaces
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` · `activations` (agent activations)
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` (and the runtime primitives it wraps) require **two** contexts:
94
- a React Router `<Router>` ancestor (it reads `useLocation`/`useNavigate`) and a
95
- `@tanstack/react-query` `<QueryClientProvider>` (its internal
96
- `RefreshContentProvider` calls `useQueryClient`). Mount both around
97
- `<FimoProviders>`:
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 — there is no router-free (or
126
- react-query-free) provider surface in the package today.
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 instead. Open it to inspect the proposal, resolve any conflicts, and merge when it is ready. Until you merge it, the proposal is not part of the environment and later chat messages will not see it.
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
- Discarding the merge leaves the current environment unchanged and keeps the proposal separate.
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, SEO, and Audit log.
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:** Before your site has ever been published, the chat shows a one-click **Publish** button that deploys immediately without opening the panel.
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
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bundled": true,
3
3
  "bundler": "esbuild",
4
- "bundledAt": "2026-07-31T07:49:25.482Z",
4
+ "bundledAt": "2026-08-03T10:18:45.069Z",
5
5
  "cliVersion": "0.10.0",
6
6
  "external": [
7
7
  "oxc-parser",