fimo 2.2.0-staging.10 → 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.
Files changed (42) hide show
  1. package/assets/skills/fimo-cli/SKILL.md +1 -1
  2. package/assets/skills/fimo-cli/references/assets.md +38 -2
  3. package/assets/skills/fimo-migration/SKILL.md +44 -13
  4. package/assets/skills/fimo-migration/references/frameworks/nextjs.md +8 -0
  5. package/assets/skills/fimo-migration/references/qa.md +30 -4
  6. package/assets/skills/fimo-migration/references/questions-and-improvements.md +188 -0
  7. package/assets/skills/fimo-migration/references/workers/content-planner.md +8 -3
  8. package/assets/skills/fimo-migration/references/workers/validator.md +20 -6
  9. package/assets/skills/fimo-migration/references/workers.md +17 -6
  10. package/assets/skills/fimo-migration/references/workflow.md +33 -6
  11. package/assets/skills/fimo-studio/SKILL.md +3 -1
  12. package/assets/skills/fimo-studio/references/agents.md +25 -0
  13. package/dist/cli/bundle.json +1 -1
  14. package/dist/cli/index.js +12 -11
  15. package/dist/runtime/templates.d.ts +1 -0
  16. package/dist/runtime/templates.js +3 -0
  17. package/package.json +8 -7
  18. package/templates/astro/package.json +2 -2
  19. package/templates/nextjs/package.json +3 -3
  20. package/templates/react-router/package.json +4 -4
  21. package/templates/sveltekit/package.json +2 -2
  22. package/templates/vite/package.json +4 -4
  23. package/templates/welcome/manifest.json +404 -0
  24. package/templates/welcome/media/analytics-overview.avif +0 -0
  25. package/templates/welcome/media/autonomous-loop.avif +0 -0
  26. package/templates/welcome/media/editable-preview.avif +0 -0
  27. package/templates/welcome/media/media-library.avif +0 -0
  28. package/templates/welcome/media/slack-teams.avif +0 -0
  29. package/templates/welcome/template/.fimo/agents/welcome-guide/GOAL.md +7 -0
  30. package/templates/welcome/template/.fimo/agents/welcome-guide/config.yaml +8 -0
  31. package/templates/welcome/template/.fimo/config.json +53 -0
  32. package/templates/welcome/template/src/font.css +60 -0
  33. package/templates/welcome/template/src/pages/ArticleDetail.tsx +68 -0
  34. package/templates/welcome/template/src/pages/Index.tsx +32 -0
  35. package/templates/welcome/template/src/pages/SiteContent.tsx +413 -0
  36. package/templates/welcome/template/src/pages/fallback-content.ts +133 -0
  37. package/templates/welcome/template/src/routes.ts +9 -0
  38. package/templates/welcome/template/src/schemas/Article.json +12 -0
  39. package/templates/welcome/template/src/schemas/Article.ts +59 -0
  40. package/templates/welcome/template/src/schemas/Article.types.ts +73 -0
  41. package/templates/welcome/template/src/schemas/HomePage.json +39 -0
  42. package/templates/welcome/template/src/schemas/HomePage.types.ts +114 -0
@@ -12,6 +12,7 @@ export declare const DEFAULT_TEMPLATE: TemplateFramework;
12
12
  * out of `dist`) to reach the package root, then into `templates/<framework>`.
13
13
  */
14
14
  export declare function getTemplatePath(framework?: TemplateFramework): string;
15
+ export declare function getWelcomeTemplatePath(): string;
15
16
  /**
16
17
  * Absolute path to the legacy template at `apps/api/templates/default/`.
17
18
  *
@@ -42,6 +42,9 @@ export const DEFAULT_TEMPLATE = 'nextjs';
42
42
  export function getTemplatePath(framework = DEFAULT_TEMPLATE) {
43
43
  return path.resolve(PACKAGE_ROOT, 'templates', framework);
44
44
  }
45
+ export function getWelcomeTemplatePath() {
46
+ return path.resolve(PACKAGE_ROOT, 'templates', 'welcome');
47
+ }
45
48
  /**
46
49
  * Absolute path to the legacy template at `apps/api/templates/default/`.
47
50
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fimo",
3
- "version": "2.2.0-staging.10",
3
+ "version": "2.2.0-staging.11",
4
4
  "description": "Fimo CLI - create, deploy, and manage Fimo projects",
5
5
  "keywords": [
6
6
  "astro-component"
@@ -176,6 +176,7 @@
176
176
  "test:integration:frameworks": "vitest run --config vitest.integration.config.ts",
177
177
  "test:integration:next": "vitest run --config vitest.integration.config.ts test/integration/next-runtime.test.ts",
178
178
  "test:integration:sveltekit": "vitest run --config vitest.integration.config.ts test/integration/sveltekit-runtime.test.ts",
179
+ "test:package-manager-compat": "pnpm --workspace-root run build --filter=fimo && node test/package-manager-compat/run.mjs",
179
180
  "test:watch": "vitest",
180
181
  "clean": "rm -rf dist *.tsbuildinfo"
181
182
  },
@@ -188,12 +189,12 @@
188
189
  "devDependencies": {
189
190
  "@clack/core": "^1.2.0",
190
191
  "@clack/prompts": "^1.2.0",
191
- "@fimo/agents-bundle": "2.2.0-staging.10",
192
- "@fimo/api-contracts": "2.2.0-staging.10",
193
- "@fimo/cli-kit": "2.2.0-staging.10",
194
- "@fimo/framework-detect": "2.2.0-staging.10",
195
- "@fimo/routes": "2.2.0-staging.10",
196
- "@fimo/tsconfig": "2.2.0-staging.10",
192
+ "@fimo/agents-bundle": "2.2.0-staging.11",
193
+ "@fimo/api-contracts": "2.2.0-staging.11",
194
+ "@fimo/cli-kit": "2.2.0-staging.11",
195
+ "@fimo/framework-detect": "2.2.0-staging.11",
196
+ "@fimo/routes": "2.2.0-staging.11",
197
+ "@fimo/tsconfig": "2.2.0-staging.11",
197
198
  "@types/node": "22.18.6",
198
199
  "agent-install": "^0.0.5",
199
200
  "astro": "^7.1.6",
@@ -9,8 +9,8 @@
9
9
  "check": "astro sync && astro check"
10
10
  },
11
11
  "dependencies": {
12
- "fimo": "2.2.0-staging.10",
13
- "fimo-astro": "2.2.0-staging.10"
12
+ "fimo": "2.2.0-staging.11",
13
+ "fimo-astro": "2.2.0-staging.11"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@astrojs/check": "^0.9.10",
@@ -12,9 +12,9 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@tanstack/react-query": "^5.80.6",
15
- "fimo": "2.2.0-staging.10",
16
- "fimo-next": "2.2.0-staging.10",
17
- "fimo-react": "2.2.0-staging.10",
15
+ "fimo": "2.2.0-staging.11",
16
+ "fimo-next": "2.2.0-staging.11",
17
+ "fimo-react": "2.2.0-staging.11",
18
18
  "next": "^16.3.3",
19
19
  "react": "^19.2.7",
20
20
  "react-dom": "^19.2.7"
@@ -21,10 +21,10 @@
21
21
  "cmdk": "^1.1.1",
22
22
  "date-fns": "^4.1.0",
23
23
  "embla-carousel-react": "^8.6.0",
24
- "fimo": "2.2.0-staging.10",
25
- "fimo-react": "2.2.0-staging.10",
26
- "fimo-react-router": "2.2.0-staging.10",
27
- "fimo-vite": "2.2.0-staging.10",
24
+ "fimo": "2.2.0-staging.11",
25
+ "fimo-react": "2.2.0-staging.11",
26
+ "fimo-react-router": "2.2.0-staging.11",
27
+ "fimo-vite": "2.2.0-staging.11",
28
28
  "input-otp": "^1.4.2",
29
29
  "isbot": "^5",
30
30
  "lucide-react": "^0.577.0",
@@ -11,8 +11,8 @@
11
11
  "prepare": "svelte-kit sync"
12
12
  },
13
13
  "dependencies": {
14
- "fimo": "2.2.0-staging.10",
15
- "fimo-sveltekit": "2.2.0-staging.10"
14
+ "fimo": "2.2.0-staging.11",
15
+ "fimo-sveltekit": "2.2.0-staging.11"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@sveltejs/kit": "^2.70.2",
@@ -11,10 +11,10 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@tanstack/react-query": "^5.80.6",
14
- "fimo": "2.2.0-staging.10",
15
- "fimo-react": "2.2.0-staging.10",
16
- "fimo-react-router": "2.2.0-staging.10",
17
- "fimo-vite": "2.2.0-staging.10",
14
+ "fimo": "2.2.0-staging.11",
15
+ "fimo-react": "2.2.0-staging.11",
16
+ "fimo-react-router": "2.2.0-staging.11",
17
+ "fimo-vite": "2.2.0-staging.11",
18
18
  "react": "^19.2.7",
19
19
  "react-dom": "^19.2.7",
20
20
  "react-router": "^8.3.0"
@@ -0,0 +1,404 @@
1
+ {
2
+ "name": "fimo-site",
3
+ "version": 14,
4
+ "description": "An editable Welcome to Fimo tutorial with real CMS content, media, branches, and an autonomous agent.",
5
+ "assets": [
6
+ {
7
+ "key": "editable-preview",
8
+ "file": "editable-preview.avif",
9
+ "name": "Editable Preview",
10
+ "altText": "A cursor selecting an orange image frame inside an editable website",
11
+ "caption": "Select this image in Preview to replace it."
12
+ },
13
+ {
14
+ "key": "media-library",
15
+ "file": "media-library.avif",
16
+ "name": "Media Library",
17
+ "altText": "A contact sheet of black, white, and orange website assets",
18
+ "caption": "These tutorial images are available in your Media Library."
19
+ },
20
+ {
21
+ "key": "autonomous-loop",
22
+ "file": "autonomous-loop.avif",
23
+ "name": "Autonomous Website Loop",
24
+ "altText": "A repeating website, check, edit, and deploy automation loop",
25
+ "caption": "Fimo agents keep a finished website healthy after the first build."
26
+ },
27
+ {
28
+ "key": "slack-teams",
29
+ "file": "slack-teams.avif",
30
+ "name": "Slack and Microsoft Teams",
31
+ "altText": "Slack and Microsoft Teams logos connected side by side",
32
+ "caption": "Connect Fimo to the collaboration tools your team already uses."
33
+ },
34
+ {
35
+ "key": "analytics-overview",
36
+ "file": "analytics-overview.avif",
37
+ "name": "Analytics Overview",
38
+ "altText": "A browser window with an ascending bar chart and an orange trend arrow",
39
+ "caption": "Follow your traffic in the Analytics workspace."
40
+ }
41
+ ],
42
+ "singletons": [
43
+ {
44
+ "type": "HomePage",
45
+ "data": {
46
+ "title": "This site is yours to change.",
47
+ "intro": {
48
+ "type": "doc",
49
+ "content": [
50
+ {
51
+ "type": "paragraph",
52
+ "content": [
53
+ {
54
+ "type": "text",
55
+ "text": "Four actions, five minutes. Every change is safe to make in this tutorial project."
56
+ }
57
+ ]
58
+ }
59
+ ]
60
+ },
61
+ "heroImage": {
62
+ "$asset": "editable-preview"
63
+ },
64
+ "heroImageHint": "Select this image in Edit mode",
65
+ "startLabel": "Start the 5-minute tour",
66
+ "tourTitle": "Try the essentials in five minutes",
67
+ "tourIntro": "Follow these steps in order. Every change is safe to make in this tutorial project.",
68
+ "steps": [
69
+ {
70
+ "number": "1",
71
+ "title": "Edit this page",
72
+ "body": "Edit mode lets you change text and images directly on the website.\n- Select the big title and replace it with “Welcome, [your name]”.",
73
+ "actionLabel": "Activate Edit mode",
74
+ "action": "toggleEditMode"
75
+ },
76
+ {
77
+ "number": "2",
78
+ "title": "Open the CMS",
79
+ "body": "The website content also lives in the CMS, as structured data.\n- Change “Title” and watch the site update.",
80
+ "actionLabel": "Jump to the Home page",
81
+ "action": "openHomePage"
82
+ },
83
+ {
84
+ "number": "3",
85
+ "title": "Explore branches",
86
+ "body": "Branches let people and agents work without touching the live site.\n- Try a change on “tutorial/first-change”.",
87
+ "actionLabel": "Show the branch menu",
88
+ "action": "openBranches"
89
+ },
90
+ {
91
+ "number": "4",
92
+ "title": "Meet your agent",
93
+ "body": "Your agent maintains this website on a schedule.\n- Click “Run now” and review the result and cost.",
94
+ "actionLabel": "Meet Welcome Guide",
95
+ "action": "openAgents"
96
+ }
97
+ ],
98
+ "articlesTitle": "Continue learning in the CMS",
99
+ "articlesIntro": "These are real entries in the Articles collection. Open Content to edit their titles, summaries, bodies, and cover images.",
100
+ "migrationTitle": "Migrate my existing website",
101
+ "migrationBody": {
102
+ "type": "doc",
103
+ "content": [
104
+ {
105
+ "type": "paragraph",
106
+ "content": [
107
+ {
108
+ "type": "text",
109
+ "text": "Open your existing local project with Codex, Claude Code, Cursor, or another coding agent. Copy the prompt below so the agent connects the website you already trust to Fimo, with a recoverable backup first."
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ },
115
+ "migrationPrompt": "Before changing anything, create a recoverable backup of this website. If it uses Git, create a branch and commit the current state. If it does not use Git, duplicate the entire project folder and confirm the copy opens. Then inspect the existing codebase and migrate this website to Fimo in place. Preserve every route, visible piece of content, media asset, form, SEO field, redirect, and locale. Connect the existing implementation to Fimo rather than generating a new empty site. Report any item you cannot migrate safely before changing it.",
116
+ "buildTitle": "Create my website",
117
+ "buildBody": {
118
+ "type": "doc",
119
+ "content": [
120
+ {
121
+ "type": "paragraph",
122
+ "content": [
123
+ {
124
+ "type": "text",
125
+ "text": "Use your Codex, Claude Code, Cursor, or other coding-agent subscription to design and build the first version in a local repository. Connect it to Fimo when the foundation is ready. Fimo starts where the first build ends: content, visual editing, environments, agents, and hosting."
126
+ }
127
+ ]
128
+ }
129
+ ]
130
+ },
131
+ "closingTitle": "Fimo keeps finished websites autonomous",
132
+ "closingBody": "Fimo Credits are designed for the agents that maintain your website and for teammates who use Studio chat without a local coding tool."
133
+ }
134
+ }
135
+ ],
136
+ "collections": [
137
+ {
138
+ "type": "Article",
139
+ "entries": [
140
+ {
141
+ "slug": "create-your-first-agent",
142
+ "data": {
143
+ "title": "Create your first agent",
144
+ "summary": "Build a weekly SEO agent with one prompt: full audit, safe fixes applied to the CMS, and a report you can trust.",
145
+ "body": {
146
+ "type": "doc",
147
+ "content": [
148
+ {
149
+ "type": "paragraph",
150
+ "content": [
151
+ {
152
+ "type": "text",
153
+ "text": "Agents are teammates with one clear mission. In a few minutes you can build one that keeps your SEO healthy: a full audit every week, safe fixes applied for you, and a report for everything else."
154
+ }
155
+ ]
156
+ },
157
+ {
158
+ "type": "heading",
159
+ "attrs": {
160
+ "level": 2
161
+ },
162
+ "content": [
163
+ {
164
+ "type": "text",
165
+ "text": "Start with the prompt"
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ "type": "paragraph",
171
+ "content": [
172
+ {
173
+ "type": "text",
174
+ "text": "Open the chat and paste this:"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "type": "codeBlock",
180
+ "content": [
181
+ {
182
+ "type": "text",
183
+ "text": "Create an agent called SEO Guardian. Every Monday morning it runs a full SEO audit of this website: page titles, meta descriptions, headings, image alt texts, internal links, and last week's analytics. It applies the safe fixes directly to the CMS content, and lists anything that needs my decision in its report. It never touches the design or the code."
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "type": "paragraph",
189
+ "content": [
190
+ {
191
+ "type": "text",
192
+ "text": "Fimo builds the agent from that sentence. You will find it in the Agents workspace, right next to Welcome Guide."
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "type": "heading",
198
+ "attrs": {
199
+ "level": 2
200
+ },
201
+ "content": [
202
+ {
203
+ "type": "text",
204
+ "text": "What the agent is made of"
205
+ }
206
+ ]
207
+ },
208
+ {
209
+ "type": "paragraph",
210
+ "content": [
211
+ {
212
+ "type": "text",
213
+ "text": "Every agent is a small bundle of three things:"
214
+ }
215
+ ]
216
+ },
217
+ {
218
+ "type": "bulletList",
219
+ "content": [
220
+ {
221
+ "type": "listItem",
222
+ "content": [
223
+ {
224
+ "type": "paragraph",
225
+ "content": [
226
+ {
227
+ "type": "text",
228
+ "text": "The goal is its soul: one clear mission written in plain words. The agent re-reads it on every run, and it is the file you edit to change how it thinks."
229
+ }
230
+ ]
231
+ }
232
+ ]
233
+ },
234
+ {
235
+ "type": "listItem",
236
+ "content": [
237
+ {
238
+ "type": "paragraph",
239
+ "content": [
240
+ {
241
+ "type": "text",
242
+ "text": "Capabilities are the strict list of what it may touch. SEO Guardian reads and writes CMS content, fetches your pages, and reads your analytics. Nothing else, unless you grant it."
243
+ }
244
+ ]
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "type": "listItem",
250
+ "content": [
251
+ {
252
+ "type": "paragraph",
253
+ "content": [
254
+ {
255
+ "type": "text",
256
+ "text": "The trigger decides when it runs: a weekly schedule here, plus Run now whenever you want."
257
+ }
258
+ ]
259
+ }
260
+ ]
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "type": "heading",
266
+ "attrs": {
267
+ "level": 2
268
+ },
269
+ "content": [
270
+ {
271
+ "type": "text",
272
+ "text": "Adjust it"
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "type": "bulletList",
278
+ "content": [
279
+ {
280
+ "type": "listItem",
281
+ "content": [
282
+ {
283
+ "type": "paragraph",
284
+ "content": [
285
+ {
286
+ "type": "text",
287
+ "text": "Sharpen the goal: add rules like never touch the pricing page or keep titles under 60 characters."
288
+ }
289
+ ]
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ "type": "listItem",
295
+ "content": [
296
+ {
297
+ "type": "paragraph",
298
+ "content": [
299
+ {
300
+ "type": "text",
301
+ "text": "Tighten or widen the capabilities as your trust grows."
302
+ }
303
+ ]
304
+ }
305
+ ]
306
+ },
307
+ {
308
+ "type": "listItem",
309
+ "content": [
310
+ {
311
+ "type": "paragraph",
312
+ "content": [
313
+ {
314
+ "type": "text",
315
+ "text": "Change the cadence, or keep it manual while you evaluate its work."
316
+ }
317
+ ]
318
+ }
319
+ ]
320
+ },
321
+ {
322
+ "type": "listItem",
323
+ "content": [
324
+ {
325
+ "type": "paragraph",
326
+ "content": [
327
+ {
328
+ "type": "text",
329
+ "text": "Read every report: it lists each change, why it was made, and what the run cost."
330
+ }
331
+ ]
332
+ }
333
+ ]
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "type": "paragraph",
339
+ "content": [
340
+ {
341
+ "type": "text",
342
+ "text": "Start with one manual run: open the agent, click Run now, and read what it did. That first report is the best way to understand how your new teammate thinks."
343
+ }
344
+ ]
345
+ }
346
+ ]
347
+ },
348
+ "cover": {
349
+ "$asset": "autonomous-loop"
350
+ }
351
+ }
352
+ },
353
+ {
354
+ "slug": "branches-and-environments",
355
+ "data": {
356
+ "title": "How branches and environments work",
357
+ "summary": "Branches isolate changes. Environments group related branches under shared deployment configuration.",
358
+ "body": {
359
+ "type": "doc",
360
+ "content": [
361
+ {
362
+ "type": "paragraph",
363
+ "content": [
364
+ {
365
+ "type": "text",
366
+ "text": "Every branch has its own content, database, preview runtime, URL, and assets, so work does not affect other branches or the live website. Several teammates can collaborate on the same branch when they want to work together. Environments group branches by deployment purpose and matching rules, with shared configuration such as secrets and webhook scopes."
367
+ }
368
+ ]
369
+ }
370
+ ]
371
+ },
372
+ "cover": {
373
+ "$asset": "editable-preview"
374
+ }
375
+ }
376
+ },
377
+ {
378
+ "slug": "discover-the-analytics",
379
+ "data": {
380
+ "title": "Discover the analytics",
381
+ "summary": "See who visits your website: pageviews, top pages, sources, devices, and countries.",
382
+ "body": {
383
+ "type": "doc",
384
+ "content": [
385
+ {
386
+ "type": "paragraph",
387
+ "content": [
388
+ {
389
+ "type": "text",
390
+ "text": "Open the Analytics workspace to follow visitors, pageviews, bounce rate, top pages, and where your traffic comes from. Analytics persists across publications, so your history stays intact every time you ship."
391
+ }
392
+ ]
393
+ }
394
+ ]
395
+ },
396
+ "cover": {
397
+ "$asset": "analytics-overview"
398
+ }
399
+ }
400
+ }
401
+ ]
402
+ }
403
+ ]
404
+ }
@@ -0,0 +1,7 @@
1
+ # Welcome pulse
2
+
3
+ Return exactly this sentence and do nothing else:
4
+
5
+ Your Fimo workspace is ready. Edit the highlighted title in Preview, then explore the Media Library.
6
+
7
+ Do not inspect files, run commands, call tools, edit content, or publish anything.
@@ -0,0 +1,8 @@
1
+ version: 1
2
+ description: 'Send one tiny onboarding pulse so you can see a scheduled agent run.'
3
+
4
+ triggers:
5
+ - type: manual
6
+ - type: schedule
7
+ cron: '*/2 * * * *'
8
+ tz: 'UTC'
@@ -0,0 +1,53 @@
1
+ {
2
+ "runtime": { "framework": "react-router" },
3
+ "seo": {
4
+ "title": "Welcome to Fimo",
5
+ "description": "Learn how to edit content, manage media, migrate a website, and run autonomous agents with Fimo.",
6
+ "siteName": "Welcome to Fimo",
7
+ "url": "https://fimo.ai/",
8
+ "image": "https://fimo.ai/socials/og_cover.png",
9
+ "favicon": "https://fimo.ai/favicon-orange.svg",
10
+ "locale": "en_US"
11
+ },
12
+ "i18n": {
13
+ "defaultLocale": "en",
14
+ "locales": ["en"],
15
+ "routing": {
16
+ "strategy": "path-prefix",
17
+ "prefixDefaultLocale": false
18
+ }
19
+ },
20
+ "routes": {
21
+ "home": {
22
+ "label": "Welcome",
23
+ "path": "/:locale",
24
+ "params": { "locale": { "type": "locale", "optional": true } },
25
+ "seo": {
26
+ "title": "Welcome to Fimo",
27
+ "description": "Your editable Fimo tutorial project."
28
+ }
29
+ },
30
+ "article": {
31
+ "label": "Article",
32
+ "path": "/:locale/articles/:slug",
33
+ "params": {
34
+ "locale": { "type": "locale", "optional": true },
35
+ "slug": {
36
+ "schema": "Article",
37
+ "queryField": "slug"
38
+ }
39
+ },
40
+ "seo": {
41
+ "title": "Fimo tutorial article",
42
+ "description": "Learn how to make your website autonomous with Fimo."
43
+ }
44
+ }
45
+ },
46
+ "agents": {
47
+ "notifications": {
48
+ "email_recipients": []
49
+ }
50
+ },
51
+ "version": "4",
52
+ "source": "cli"
53
+ }
@@ -0,0 +1,60 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500&display=swap');
2
+
3
+ .fimo-starter-font {
4
+ font-family:
5
+ 'Manrope',
6
+ ui-sans-serif,
7
+ system-ui,
8
+ -apple-system,
9
+ BlinkMacSystemFont,
10
+ 'Segoe UI',
11
+ sans-serif;
12
+ }
13
+
14
+ .fimo-mono {
15
+ font-family: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;
16
+ letter-spacing: 0.08em;
17
+ }
18
+
19
+ @keyframes fimo-icon-loop {
20
+ 0%,
21
+ 100% {
22
+ transform: translate(0, 0) rotate(0deg);
23
+ }
24
+ 25% {
25
+ transform: translate(2px, -2px) rotate(6deg);
26
+ }
27
+ 50% {
28
+ transform: translate(0, 1px) rotate(0deg);
29
+ }
30
+ 75% {
31
+ transform: translate(-2px, -1px) rotate(-6deg);
32
+ }
33
+ }
34
+
35
+ .step-cell:hover .step-icon {
36
+ animation: fimo-icon-loop 1.1s ease-in-out 2;
37
+ }
38
+
39
+ @keyframes fimo-dot-blink {
40
+ 0%,
41
+ 80%,
42
+ 100% {
43
+ opacity: 0.25;
44
+ }
45
+ 40% {
46
+ opacity: 1;
47
+ }
48
+ }
49
+
50
+ .fimo-dots span {
51
+ animation: fimo-dot-blink 1.2s infinite;
52
+ }
53
+
54
+ .fimo-dots span:nth-child(2) {
55
+ animation-delay: 0.2s;
56
+ }
57
+
58
+ .fimo-dots span:nth-child(3) {
59
+ animation-delay: 0.4s;
60
+ }