fimo 2.8.0-staging.8 → 2.8.0

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 (129) hide show
  1. package/assets/skills/fimo/SKILL.md +0 -1
  2. package/assets/skills/fimo-cli/SKILL.md +6 -7
  3. package/assets/skills/fimo-cli/references/assets.md +2 -0
  4. package/assets/skills/fimo-cli/references/deploy.md +1 -1
  5. package/assets/skills/fimo-cli/references/init.md +1 -2
  6. package/assets/skills/fimo-cli/references/integrations/firecrawl.md +1 -41
  7. package/assets/skills/fimo-cli/references/integrations.md +2 -38
  8. package/assets/skills/fimo-cli/references/knowledge.md +1 -1
  9. package/assets/skills/fimo-cli/references/mcp.md +5 -6
  10. package/assets/skills/fimo-cli/references/preview.md +1 -1
  11. package/assets/skills/fimo-cli/references/project-vars-and-secrets.md +0 -16
  12. package/assets/skills/fimo-cli/references/webhooks.md +0 -2
  13. package/assets/skills/fimo-code/SKILL.md +1 -0
  14. package/assets/skills/fimo-code/references/assets.md +5 -5
  15. package/assets/skills/fimo-code/references/design.md +1 -1
  16. package/assets/skills/fimo-code/references/ui.md +1 -1
  17. package/assets/skills/fimo-studio/SKILL.md +13 -7
  18. package/assets/skills/fimo-studio/references/ai-chat.md +15 -2
  19. package/assets/skills/fimo-studio/references/billing-and-credits.md +4 -6
  20. package/assets/skills/fimo-studio/references/cms.md +1 -1
  21. package/assets/skills/fimo-studio/references/command-palette.md +1 -2
  22. package/assets/skills/fimo-studio/references/connections.md +3 -4
  23. package/assets/skills/fimo-studio/references/custom-domains.md +2 -2
  24. package/assets/skills/fimo-studio/references/media-library.md +1 -2
  25. package/assets/skills/fimo-studio/references/preview-and-responsive.md +4 -9
  26. package/assets/skills/fimo-studio/references/project-creation.md +24 -6
  27. package/assets/skills/fimo-studio/references/publish-and-deploy.md +2 -2
  28. package/assets/skills/fimo-studio/references/schedules.md +2 -3
  29. package/assets/skills/fimo-studio/references/seo-settings.md +2 -2
  30. package/assets/skills/fimo-studio/references/sharing-and-collaboration.md +2 -3
  31. package/assets/skills/fimo-studio/references/visual-editing.md +1 -1
  32. package/assets/skills/fimo-studio/references/webhooks.md +7 -8
  33. package/dist/cli/bundle.json +2 -2
  34. package/dist/cli/index.js +153 -162
  35. package/dist/runtime/paths/get-fimo-paths.js +2 -24
  36. package/dist/runtime/project-layout.d.ts +0 -1
  37. package/dist/runtime/project-layout.js +1 -5
  38. package/dist/runtime/shared/local-runtime-env.js +2 -14
  39. package/dist/runtime/templates.d.ts +0 -1
  40. package/dist/runtime/templates.js +0 -3
  41. package/package.json +10 -10
  42. package/release.json +2 -2
  43. package/templates/astro/.fimo/config.json +0 -14
  44. package/templates/astro/AGENTS.md +2 -1
  45. package/templates/astro/_gitignore +3 -0
  46. package/templates/astro/package.json +3 -3
  47. package/templates/astro/src/layouts/Base.astro +0 -48
  48. package/templates/nextjs/AGENTS.md +1 -1
  49. package/templates/nextjs/_gitignore +3 -0
  50. package/templates/nextjs/package.json +5 -5
  51. package/templates/react-router/AGENTS.md +1 -1
  52. package/templates/react-router/_gitignore +3 -0
  53. package/templates/react-router/package.json +5 -5
  54. package/templates/sveltekit/AGENTS.md +1 -0
  55. package/templates/sveltekit/_gitignore +3 -0
  56. package/templates/sveltekit/package.json +3 -3
  57. package/templates/vite/AGENTS.md +2 -0
  58. package/templates/vite/_gitignore +3 -0
  59. package/templates/vite/package.json +5 -5
  60. package/assets/agent-templates/_default/GOAL.md +0 -21
  61. package/assets/agent-templates/_default/capabilities.yaml +0 -11
  62. package/assets/agent-templates/_default/config.yaml +0 -13
  63. package/assets/agent-templates/broken-link-sweeper/GOAL.md +0 -51
  64. package/assets/agent-templates/broken-link-sweeper/capabilities.yaml +0 -1
  65. package/assets/agent-templates/broken-link-sweeper/config.yaml +0 -13
  66. package/assets/agent-templates/content-translator/GOAL.md +0 -33
  67. package/assets/agent-templates/content-translator/capabilities.yaml +0 -5
  68. package/assets/agent-templates/content-translator/config.yaml +0 -12
  69. package/assets/agent-templates/content-translator/scripts/translate-entries.ts +0 -69
  70. package/assets/agent-templates/post-deploy-check/GOAL.md +0 -23
  71. package/assets/agent-templates/post-deploy-check/capabilities.yaml +0 -1
  72. package/assets/agent-templates/post-deploy-check/config.yaml +0 -10
  73. package/assets/agent-templates/post-deploy-check/scripts/check-logs.ts +0 -39
  74. package/assets/agent-templates/post-deploy-check/scripts/probe-routes.ts +0 -53
  75. package/assets/agent-templates/seo-audit/GOAL.md +0 -43
  76. package/assets/agent-templates/seo-audit/capabilities.yaml +0 -3
  77. package/assets/agent-templates/seo-audit/config.yaml +0 -14
  78. package/assets/agent-templates/seo-audit/references/report-template.md +0 -28
  79. package/assets/agent-templates/seo-audit/references/scoring-methodology.md +0 -30
  80. package/assets/agent-templates/seo-audit/scripts/analyze-html.ts +0 -82
  81. package/assets/agent-templates/seo-audit/scripts/fetch-page.ts +0 -39
  82. package/assets/agent-templates/seo-audit/scripts/list-routes.ts +0 -46
  83. package/assets/agent-templates/seo-audit/scripts/report.ts +0 -82
  84. package/assets/agent-templates/seo-audit/scripts/score.ts +0 -131
  85. package/assets/skills/fimo-cli/references/agents.md +0 -298
  86. package/assets/skills/fimo-studio/references/agents.md +0 -33
  87. package/assets/skills/fimo-studio/references/drawing-and-wireframing.md +0 -61
  88. package/templates/astro/src/components/ProjectOverview.astro +0 -45
  89. package/templates/astro/src/pages/[locale]/projects/[slug].astro +0 -38
  90. package/templates/astro/src/pages/[locale]/projects/index.astro +0 -19
  91. package/templates/astro/src/pages/projects/[slug].astro +0 -31
  92. package/templates/astro/src/pages/projects/index.astro +0 -13
  93. package/templates/astro/src/schemas/Project.json +0 -9
  94. package/templates/astro/src/schemas/Project.ts +0 -29
  95. package/templates/astro/src/schemas/Project.types.ts +0 -70
  96. package/templates/astro/src/schemas/SiteSettings.json +0 -10
  97. package/templates/astro/src/schemas/SiteSettings.ts +0 -31
  98. package/templates/astro/src/schemas/SiteSettings.types.ts +0 -69
  99. package/templates/react-router/src/pages/Privacy.tsx +0 -79
  100. package/templates/react-router/src/pages/Terms.tsx +0 -48
  101. package/templates/react-router/src/pages/legal/LegalPage.tsx +0 -42
  102. package/templates/welcome/manifest.json +0 -655
  103. package/templates/welcome/media/analytics-overview.avif +0 -0
  104. package/templates/welcome/media/autonomous-loop.avif +0 -0
  105. package/templates/welcome/media/editable-preview.avif +0 -0
  106. package/templates/welcome/media/media-library.avif +0 -0
  107. package/templates/welcome/media/slack-teams.avif +0 -0
  108. package/templates/welcome/template/.fimo/agents/welcome-guide/GOAL.md +0 -12
  109. package/templates/welcome/template/.fimo/agents/welcome-guide/capabilities.yaml +0 -3
  110. package/templates/welcome/template/.fimo/agents/welcome-guide/config.yaml +0 -8
  111. package/templates/welcome/template/.fimo/config.json +0 -52
  112. package/templates/welcome/template/src/font.css +0 -60
  113. package/templates/welcome/template/src/pages/ArticleDetail.tsx +0 -104
  114. package/templates/welcome/template/src/pages/Index.tsx +0 -36
  115. package/templates/welcome/template/src/pages/SiteContent.tsx +0 -674
  116. package/templates/welcome/template/src/pages/fallback-content.ts +0 -152
  117. package/templates/welcome/template/src/routes.ts +0 -9
  118. package/templates/welcome/template/src/schemas/Article.json +0 -34
  119. package/templates/welcome/template/src/schemas/Article.ts +0 -54
  120. package/templates/welcome/template/src/schemas/Article.types.ts +0 -93
  121. package/templates/welcome/template/src/schemas/Author.json +0 -17
  122. package/templates/welcome/template/src/schemas/Author.ts +0 -51
  123. package/templates/welcome/template/src/schemas/Author.types.ts +0 -54
  124. package/templates/welcome/template/src/schemas/Category.json +0 -17
  125. package/templates/welcome/template/src/schemas/Category.ts +0 -51
  126. package/templates/welcome/template/src/schemas/Category.types.ts +0 -54
  127. package/templates/welcome/template/src/schemas/HomePage.json +0 -110
  128. package/templates/welcome/template/src/schemas/HomePage.ts +0 -22
  129. package/templates/welcome/template/src/schemas/HomePage.types.ts +0 -116
@@ -1,8 +0,0 @@
1
- version: 1
2
- description: 'Reviews the site copy and proposes one small improvement for you to approve.'
3
-
4
- # Manual only. Pool preparation creates the tutorial's deterministic proposal
5
- # without firing this trigger; keeping the trigger allows later real runs while
6
- # avoiding a schedule that would keep spawning task environments.
7
- triggers:
8
- - type: manual
@@ -1,52 +0,0 @@
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 site."
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
- }
@@ -1,60 +0,0 @@
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
- }
@@ -1,104 +0,0 @@
1
- import { Image, RichText, Text } from 'fimo-react';
2
- import { ArrowLeft } from 'lucide-react';
3
- import { useEffect, useRef } from 'react';
4
- import { Link, useParams } from 'react-router';
5
-
6
- import ArticleContent from '@/schemas/Article';
7
-
8
- import '../font.css';
9
- import { ARTICLE_POPULATE, AuthorLine, useStudioScrollRelay } from './SiteContent';
10
-
11
- const ArticleDetail = () => {
12
- const { slug = '' } = useParams();
13
- const { data: article, isLoading } = ArticleContent.useGetBySlug(slug, { populate: ARTICLE_POPULATE });
14
- useStudioScrollRelay();
15
-
16
- const bodyRef = useRef<HTMLDivElement | null>(null);
17
-
18
- // Prompts in articles double as one-click actions: a button under each
19
- // code block hands its text to the Studio chat, which submits it for the
20
- // user. Injected into the DOM because the rich-text renderer owns the
21
- // markup; the guard keeps re-renders from stacking duplicates.
22
- useEffect(() => {
23
- const container = bodyRef.current;
24
- if (!container) {
25
- return;
26
- }
27
- for (const pre of Array.from(container.querySelectorAll('pre'))) {
28
- if (pre.nextElementSibling?.classList.contains('fimo-prompt-cta')) {
29
- continue;
30
- }
31
- const button = document.createElement('button');
32
- button.type = 'button';
33
- button.textContent = 'Ask Fimo to build this';
34
- button.className =
35
- 'fimo-prompt-cta mt-3 w-full cursor-pointer rounded-[8px] border border-orange-600 py-2.5 text-[15px] font-semibold text-orange-700 transition-colors hover:bg-orange-600 hover:text-white';
36
- const text = pre.innerText;
37
- button.addEventListener('click', () => {
38
- window.parent.postMessage({ type: 'fimo:welcome:chat-prompt', text }, '*');
39
- });
40
- pre.insertAdjacentElement('afterend', button);
41
- }
42
- });
43
-
44
- if (!article) {
45
- return (
46
- <main className="fimo-starter-font min-h-screen bg-zinc-100 px-3 py-3 text-zinc-950 sm:px-6 sm:py-8">
47
- <div className="mx-auto max-w-4xl px-6 py-24 text-center sm:px-12">
48
- <p className="text-zinc-600">{isLoading ? 'Loading article…' : 'This article does not exist.'}</p>
49
- {!isLoading && (
50
- <Link
51
- to="/"
52
- className="mt-6 inline-flex cursor-pointer items-center gap-2 rounded-[8px] font-semibold text-orange-700 hover:text-orange-800"
53
- >
54
- <ArrowLeft className="size-4" aria-hidden />
55
- Back to the tutorial
56
- </Link>
57
- )}
58
- </div>
59
- </main>
60
- );
61
- }
62
-
63
- return (
64
- <main className="fimo-starter-font min-h-screen bg-zinc-100 px-3 py-3 text-zinc-950 sm:px-6 sm:py-8">
65
- <article className="mx-auto max-w-4xl">
66
- <header className="border-b border-zinc-300 px-6 py-6 sm:px-12">
67
- <Link
68
- to="/"
69
- className="inline-flex cursor-pointer items-center gap-2 rounded-[8px] text-sm font-semibold text-orange-700 hover:text-orange-800"
70
- >
71
- <ArrowLeft className="size-4" aria-hidden />
72
- Back to the tutorial
73
- </Link>
74
- </header>
75
- <div className="px-6 py-12 sm:px-12 sm:py-16">
76
- <p className="text-xs font-semibold tracking-[0.18em] text-orange-700 uppercase">
77
- {article.category ? <Text value={article.category.name} as="span" /> : 'Fimo tutorial'}
78
- </p>
79
- <Text
80
- value={article.title}
81
- as="h1"
82
- className="mt-5 max-w-3xl text-4xl font-bold tracking-[-0.04em] sm:text-6xl"
83
- />
84
- <Text value={article.summary} as="p" className="mt-6 max-w-2xl text-lg leading-8 text-zinc-600" />
85
- {article.author ? <AuthorLine author={article.author} className="mt-6 !text-[14px]" /> : null}
86
- <Image
87
- value={article.cover}
88
- className="mt-10 aspect-[48/25] w-full rounded-[8px] border border-zinc-950 object-cover"
89
- loading="eager"
90
- fetchPriority="high"
91
- />
92
- <div ref={bodyRef}>
93
- <RichText
94
- value={article.body}
95
- className="mx-auto mt-12 max-w-2xl text-lg leading-8 text-zinc-700 [&_a]:cursor-pointer [&_a]:font-semibold [&_a]:text-orange-700 [&_a]:underline [&_a]:underline-offset-4 [&_h2]:mt-12 [&_h2]:text-2xl [&_h2]:font-bold [&_h2]:tracking-[-0.02em] [&_h2]:text-zinc-950 [&_h2+p]:mt-4 [&_h3]:mt-8 [&_h3]:text-xl [&_h3]:font-bold [&_h3]:text-zinc-950 [&_li+li]:mt-2 [&_p+p]:mt-6 [&_pre]:mt-6 [&_pre]:overflow-x-auto [&_pre]:rounded-[8px] [&_pre]:bg-zinc-950 [&_pre]:p-5 [&_pre]:text-[15px] [&_pre]:leading-7 [&_pre]:whitespace-pre-wrap [&_pre]:text-zinc-100 [&_pre+p]:mt-6 [&_ul]:mt-6 [&_ul]:list-disc [&_ul]:pl-6 [&_ul+p]:mt-6"
96
- />
97
- </div>
98
- </div>
99
- </article>
100
- </main>
101
- );
102
- };
103
-
104
- export default ArticleDetail;
@@ -1,36 +0,0 @@
1
- import ArticleContent from '@/schemas/Article';
2
- import HomePageContent from '@/schemas/HomePage';
3
-
4
- import '../font.css';
5
- import { FALLBACK_ARTICLES, FALLBACK_PAGE } from './fallback-content';
6
- import { ARTICLE_POPULATE, ContentFallback, TutorialPage } from './SiteContent';
7
-
8
- const Index = () => {
9
- const { data: page, isLoading, isError } = HomePageContent.useGet();
10
- const {
11
- data: articles = [],
12
- isLoading: articlesLoading,
13
- isError: articlesError,
14
- } = ArticleContent.useGet({ populate: ARTICLE_POPULATE });
15
-
16
- // While loading, the page renders the seed copy through the same
17
- // components, so the live values reconcile in place with no visible
18
- // change and no layout shift. Keeping one JSX position avoids a remount
19
- // on the fallback-to-live switch. Errors keep the seed copy up too —
20
- // the query refetches on focus/reconnect, so an unreachable backend
21
- // self-heals; the empty message is reserved for genuinely absent content.
22
- const showTutorial = Boolean(page) || isLoading || articlesLoading || isError || articlesError;
23
- const resolvedArticles = articles.length > 0 ? articles : articlesLoading ? FALLBACK_ARTICLES : articles;
24
-
25
- return (
26
- <div className="fimo-starter-font min-h-screen bg-white text-zinc-950">
27
- {showTutorial ? (
28
- <TutorialPage page={page ?? FALLBACK_PAGE} articles={page ? resolvedArticles : FALLBACK_ARTICLES} />
29
- ) : (
30
- <ContentFallback />
31
- )}
32
- </div>
33
- );
34
- };
35
-
36
- export default Index;