@ignite-agent/agent 0.1.1 → 0.4.2

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 (46) hide show
  1. package/AI.txt +7 -0
  2. package/LICENSE +57 -4
  3. package/README.md +162 -5
  4. package/dist/cli/index.js +79 -22
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/project.d.ts +39 -0
  7. package/dist/cli/project.js +276 -0
  8. package/dist/cli/project.js.map +1 -0
  9. package/dist/ignite.css +228 -0
  10. package/dist/index.d.ts +7 -2
  11. package/dist/index.js +7 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/operator/blog.d.ts +11 -6
  14. package/dist/operator/blog.js +11 -6
  15. package/dist/operator/blog.js.map +1 -1
  16. package/dist/operator/card.d.ts +5 -0
  17. package/dist/operator/card.js +11 -0
  18. package/dist/operator/card.js.map +1 -0
  19. package/dist/operator/jsonld.d.ts +5 -0
  20. package/dist/operator/jsonld.js +6 -3
  21. package/dist/operator/jsonld.js.map +1 -1
  22. package/dist/operator/page.d.ts +10 -1
  23. package/dist/operator/page.js +20 -3
  24. package/dist/operator/page.js.map +1 -1
  25. package/dist/operator/prose.d.ts +19 -0
  26. package/dist/operator/prose.js +26 -0
  27. package/dist/operator/prose.js.map +1 -0
  28. package/dist/operator/sitemap-merge.d.ts +10 -0
  29. package/dist/operator/sitemap-merge.js +56 -0
  30. package/dist/operator/sitemap-merge.js.map +1 -0
  31. package/dist/operator/sitemap.d.ts +4 -1
  32. package/dist/operator/sitemap.js +27 -17
  33. package/dist/operator/sitemap.js.map +1 -1
  34. package/dist/operator/ui.d.ts +45 -0
  35. package/dist/operator/ui.js +486 -0
  36. package/dist/operator/ui.js.map +1 -0
  37. package/dist/operator/wiki.d.ts +11 -5
  38. package/dist/operator/wiki.js +24 -4
  39. package/dist/operator/wiki.js.map +1 -1
  40. package/dist/types.d.ts +28 -1
  41. package/onboarding/CLAUDE-CODE-SETUP.md +40 -24
  42. package/onboarding/CURSOR-SETUP.md +73 -0
  43. package/onboarding/LOVABLE-SETUP.md +76 -0
  44. package/onboarding/MIGRATE-EXISTING.md +94 -0
  45. package/onboarding/REPLIT-SETUP.md +76 -0
  46. package/package.json +9 -5
package/AI.txt ADDED
@@ -0,0 +1,7 @@
1
+ # Reserved for text and data mining / AI training.
2
+ # License: LICENSE (MIT + Additional Terms — no AI / ML training).
3
+ # EU Directive 2019/790 Art. 4 opt-out.
4
+
5
+ User-Agent: *
6
+ Disallow: /
7
+ TDM-Reservation: 1
package/LICENSE CHANGED
@@ -1,5 +1,58 @@
1
- Copyright (c) Ignite. All rights reserved.
1
+ Ignite Agent License
2
2
 
3
- This package is provided to Ignite customers for the sole purpose of integrating
4
- their site with the Ignite service. Use is subject to the Ignite Terms of Service.
5
- No other use, redistribution, or modification is permitted without written consent.
3
+ Copyright (c) 2026 Ignite
4
+
5
+ This license is the MIT License plus an additional reservation of rights for
6
+ text-and-data mining and AI/ML training. Software use, modification, and
7
+ redistribution (including as a dependency in your own application) are MIT.
8
+ Training models on this source is not.
9
+
10
+ -----------------------------------------------------------------------------
11
+ MIT License
12
+ -----------------------------------------------------------------------------
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice, this permission notice, and the Additional Terms
22
+ below shall be included in all copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+
32
+ -----------------------------------------------------------------------------
33
+ Additional Terms — no AI / ML training (TDM reservation)
34
+ -----------------------------------------------------------------------------
35
+
36
+ Notwithstanding the MIT grant above, the copyright holder reserves all rights
37
+ to use this Software, its source code, documentation, and associated files for
38
+ text and data mining and for training, fine-tuning, evaluating, or otherwise
39
+ improving machine-learning or artificial-intelligence models (including large
40
+ language models), pursuant to Article 4 of Directive (EU) 2019/790 and any
41
+ equivalent reservation available under applicable law.
42
+
43
+ Without prior written permission from the copyright holder, you may not:
44
+
45
+ 1. Include this Software in a corpus, dataset, or scrape used to train or
46
+ fine-tune an AI or ML model.
47
+ 2. Use this Software to evaluate, distill, or otherwise improve an AI or ML
48
+ model, other than incidentally while running, testing, or modifying the
49
+ Software as a software package.
50
+ 3. Circumvent this reservation by paraphrasing, translating, or converting
51
+ the source for the purposes in (1) or (2).
52
+
53
+ These Additional Terms do not limit ordinary use of the published package:
54
+ installing it, calling its APIs, modifying it to integrate with your own site,
55
+ and redistributing copies that retain this license.
56
+
57
+ This file is therefore not OSI “MIT” in isolation. The SPDX expression for
58
+ package metadata is LicenseRef-MIT-NoAI. See README.md.
package/README.md CHANGED
@@ -22,6 +22,8 @@ IGNITE_SITE_ID=your-site-id
22
22
  IGNITE_SITE_TOKEN=your-site-token
23
23
  ```
24
24
 
25
+ Never `NEXT_PUBLIC_IGNITE_SITE_TOKEN`. Send the token as the `X-Ignite-Site-Token` header from the server only.
26
+
25
27
  Provision them from the CLI:
26
28
 
27
29
  ```bash
@@ -35,6 +37,8 @@ cannot execute Action Center writes or proxy LLM spend.
35
37
 
36
38
  ## Wire it up
37
39
 
40
+ Works with `app/` or `src/app/`.
41
+
38
42
  ```ts
39
43
  // app/robots.ts
40
44
  export { default } from '@ignite-agent/agent/robots'
@@ -45,16 +49,39 @@ export { default } from '@ignite-agent/agent/robots'
45
49
  export { default } from '@ignite-agent/agent/sitemap'
46
50
  ```
47
51
 
52
+ That file is `/sitemap.xml`. It unions Hub crawled URLs with **every published wiki and blog page**
53
+ from the feed (`/w/...`, `/blog/...`, plus `/w` and `/blog` indexes). Set `IGNITE_SITE_URL` so those
54
+ locs are absolute. If you already have a sitemap, do not replace it — merge:
55
+
56
+ ```ts
57
+ import igniteSitemap, { mergeSitemap } from '@ignite-agent/agent/sitemap'
58
+
59
+ export default async function sitemap() {
60
+ const local = await localSitemap()
61
+ return mergeSitemap(local, await igniteSitemap())
62
+ }
63
+ ```
64
+
48
65
  ```ts
49
66
  // app/w/[slug]/page.tsx
50
67
  export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/wiki'
51
68
  ```
52
69
 
70
+ ```ts
71
+ // app/w/page.tsx
72
+ export { WikiIndex as default, revalidate } from '@ignite-agent/agent/wiki'
73
+ ```
74
+
53
75
  ```ts
54
76
  // app/blog/[slug]/page.tsx
55
77
  export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/blog'
56
78
  ```
57
79
 
80
+ ```ts
81
+ // app/blog/page.tsx
82
+ export { BlogIndex as default, revalidate } from '@ignite-agent/agent/blog'
83
+ ```
84
+
58
85
  ```tsx
59
86
  // app/layout.tsx
60
87
  import { IgniteJsonLd } from '@ignite-agent/agent/jsonld'
@@ -91,19 +118,140 @@ export { proxy, config } from '@ignite-agent/agent/proxy'
91
118
  export { middleware, config } from '@ignite-agent/agent/proxy'
92
119
  ```
93
120
 
94
- Or let the CLI write the files:
121
+ Or let the CLI write the files (and, when it finds `globals.css`, map brand variables):
95
122
 
96
123
  ```bash
97
124
  npx ignite init
125
+ npx ignite doctor
98
126
  ```
99
127
 
128
+ Coding agents: paste the prompt in `onboarding/` for Claude Code, Cursor, Lovable, or Replit. `AGENTS.md` is the
129
+ source of truth.
130
+
100
131
  ## How pages land
101
132
 
102
133
  Approved wiki and article bodies live on Ignite. Your app fetches them on the server (`revalidate = 60`) and
103
- renders the HTML. Bots hit **your origin**, not the Ignite API. Unpublish in Ignite → the slug 404s on the
104
- next fetch.
134
+ renders the HTML in `FeedArticle`. Bots hit **your origin**, not the Ignite API. Unpublish in Ignite → the slug
135
+ 404s on the next fetch.
136
+
137
+ `FeedArticle` and `generateMetadata` use extra Hub fields when present: `author`, `image` / `images`,
138
+ `excerpt`, `datePublished`, `dateModified`, `lastReviewed`. Missing fields stay omitted (no invented person,
139
+ placeholder image, or bumped date). Per-page JSON-LD (`BlogPosting` / `WebPage`) is a sibling
140
+ `<script type="application/ld+json">` of the article — the Next.js App Router JSON-LD pattern. Site-level
141
+ `IgniteJsonLd` belongs in the root layout `<head>` (or the top of `<body>` if the layout has no `<head>`).
142
+
143
+ ### Absolute URLs (recommended)
144
+
145
+ Set one of these so canonical tags and JSON-LD become absolute:
146
+
147
+ ```
148
+ IGNITE_SITE_URL=https://yourdomain.com
149
+ # or
150
+ NEXT_PUBLIC_SITE_URL=https://yourdomain.com
151
+ ```
152
+
153
+ Prose CSS uses `<style href="ignite-ui" precedence="medium">` (hoisted and deduped). Injected styles are
154
+ on by default; to bundle the stylesheet yourself:
155
+
156
+ ```css
157
+ @import '@ignite-agent/agent/styles.css';
158
+ ```
159
+
160
+ then pass `injectCss={false}` to `IgniteFrame` / `IgniteProse`.
161
+
162
+ If this app already has `/blog` or `/w` pages, **do not replace them.** `npx ignite init` skips those files.
163
+ Wrap the existing route so local slugs keep winning and Hub pages occupy unused slugs. See
164
+ `onboarding/MIGRATE-EXISTING.md`.
165
+
166
+ Do not fetch the feed from a Client Component. Wrap the default export if you want your own layout:
167
+
168
+ ```tsx
169
+ import WikiPage, { generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/wiki'
170
+
171
+ export { generateStaticParams, generateMetadata, revalidate }
172
+
173
+ export default function Page(props: { params: Promise<{ slug: string }> }) {
174
+ return (
175
+ <main>
176
+ <WikiPage {...props} />
177
+ </main>
178
+ )
179
+ }
180
+ ```
181
+
182
+ ## Brand tokens
183
+
184
+ Wiki and blog pages inherit the host brand through CSS variables. No `tokens` prop is required. Set these on
185
+ `:root` (or `.dark`) in your global CSS:
186
+
187
+ | Variable | Fallback |
188
+ |---|---|
189
+ | `--ignite-color-text` | `currentColor` |
190
+ | `--ignite-color-muted` | `#666` |
191
+ | `--ignite-color-primary` | `#2563eb` |
192
+ | `--ignite-color-border` | `#e5e5e5` |
193
+ | `--ignite-font-sans` | `system-ui, sans-serif` |
194
+ | `--ignite-font-heading` | the sans stack |
195
+ | `--ignite-radius` | `0.5rem` |
196
+ | `--ignite-prose-width` | `65ch` |
197
+ | `--ignite-space-scale` | `1` |
198
+
199
+ ### shadcn / Tailwind (HSL channels)
200
+
201
+ If `--foreground` is stored as `222.2 47.4% 11.2%` (no `hsl()`), wrap it:
202
+
203
+ ```css
204
+ :root {
205
+ --ignite-color-text: hsl(var(--foreground));
206
+ --ignite-color-muted: hsl(var(--muted-foreground));
207
+ --ignite-color-primary: hsl(var(--primary));
208
+ --ignite-color-border: hsl(var(--border));
209
+ --ignite-font-sans: var(--font-sans, system-ui, sans-serif);
210
+ --ignite-font-heading: var(--font-heading, var(--ignite-font-sans));
211
+ --ignite-radius: var(--radius, 0.5rem);
212
+ }
213
+ ```
214
+
215
+ ### Full color values (oklch, hex, rgb)
216
+
217
+ If `--foreground` is already a color, map it directly:
218
+
219
+ ```css
220
+ :root {
221
+ --ignite-color-text: var(--foreground);
222
+ --ignite-color-muted: var(--muted-foreground);
223
+ --ignite-color-primary: var(--primary);
224
+ --ignite-color-border: var(--border);
225
+ --ignite-font-sans: var(--font-body, system-ui, sans-serif);
226
+ --ignite-font-heading: var(--font-heading, var(--ignite-font-sans));
227
+ --ignite-radius: var(--radius);
228
+ }
229
+ ```
230
+
231
+ `npx ignite init` detects shadcn vs Tailwind vs raw colors and writes a mapping when `globals.css` exists.
232
+
233
+ Dark mode follows the host `color-scheme` and your variables. Changing the host variables changes Ignite pages
234
+ with no extra CSS.
235
+
236
+ ### Programmatic tokens
237
+
238
+ ```tsx
239
+ import { FeedArticle, IgniteProse, IgniteTokensProvider } from '@ignite-agent/agent'
240
+
241
+ <IgniteTokensProvider tokens={{ colorPrimary: '#f19254', fontSans: 'Cairo, sans-serif' }}>
242
+ <FeedArticle page={page} />
243
+ </IgniteTokensProvider>
244
+ ```
245
+
246
+ Or pass `tokens` on `FeedArticle`, `IgniteProse`, `BlogIndex`, or `WikiIndex`.
105
247
 
106
- You can wrap `FeedArticle` later if you want your own layout. Do not fetch the feed from a Client Component.
248
+ ## Exports
249
+
250
+ ```ts
251
+ export { default, generateStaticParams, generateMetadata, revalidate, WikiIndex, FeedArticle, IgniteProse, pageJsonLd, tryLoadFeedPage, mergeSlugs } from '@ignite-agent/agent/wiki'
252
+ export { default, generateStaticParams, generateMetadata, revalidate, BlogIndex, FeedArticle, IgniteProse, pageJsonLd, tryLoadFeedPage, mergeSlugs } from '@ignite-agent/agent/blog'
253
+ export { FeedArticle, IgniteProse, IgniteTokensProvider, BlogIndex, WikiIndex, pageJsonLd, tryLoadFeedPage, mergeSlugs } from '@ignite-agent/agent'
254
+ ```
107
255
 
108
256
  ## MCP (coding agents only)
109
257
 
@@ -118,7 +266,8 @@ at this command. The Next.js app does not speak MCP.
118
266
 
119
267
  Ignite is additive. If the SDK is unconfigured or the Ignite API is unreachable, `robots` falls back to
120
268
  allow-all, `sitemap` returns empty, JSON-LD renders nothing, and `metadata` returns `{}` — your app's own
121
- defaults stand. A missing page 404s. A Hub outage on a cached page keeps the last ISR copy.
269
+ defaults stand. A missing page 404s. A Hub outage on a cached page keeps the last ISR copy. Wiki/blog indexes
270
+ render nothing when the feed is empty.
122
271
 
123
272
  ## Environment
124
273
 
@@ -127,3 +276,11 @@ defaults stand. A missing page 404s. A Hub outage on a cached page keeps the las
127
276
  | `IGNITE_SITE_ID` | yes | — |
128
277
  | `IGNITE_SITE_TOKEN` | yes | — |
129
278
  | `IGNITE_HUB_URL` | no | `https://app.igniteagent.ai` |
279
+ | `IGNITE_SITE_URL` | no | public origin for canonical + JSON-LD (e.g. `https://www.example.com`). Falls back to `NEXT_PUBLIC_SITE_URL` or `VERCEL_PROJECT_PRODUCTION_URL`. |
280
+
281
+ ## License
282
+
283
+ MIT for ordinary software use (install, modify, ship as a dependency of your site), plus an additional
284
+ reservation: you may not use this source to train, fine-tune, or improve AI/ML models, including LLMs. That
285
+ reservation is an EU Directive 2019/790 Art. 4 opt-out. This is **not** OSI MIT in isolation. See `LICENSE`
286
+ and `AI.txt`.
package/dist/cli/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
+ import { brandCssSnippet, detectDesignSystem, diagnoseProject, findGlobalsCss, hostOwnedContentRoutes, injectBrandCss, inspectRouteFile, loadEnvFile, migrateExistingSnippet, migrateSitemapSnippet, resolveAppDir, ROUTE_SOURCES, } from './project.js';
4
5
  const HUB_URL = (process.env.IGNITE_HUB_URL?.trim() || 'https://app.igniteagent.ai').replace(/\/+$/, '');
5
6
  function write(path, contents) {
6
7
  if (existsSync(path)) {
@@ -22,47 +23,103 @@ function nextMajor(cwd) {
22
23
  return 16;
23
24
  }
24
25
  }
26
+ function rel(cwd, path) {
27
+ return path.startsWith(cwd) ? path.slice(cwd.length + 1) : path;
28
+ }
25
29
  function init() {
26
30
  const cwd = process.cwd();
27
- if (!existsSync(join(cwd, 'app'))) {
28
- console.error('No app/ directory found. Run this from the root of a Next.js App Router project.');
31
+ const appDir = resolveAppDir(cwd);
32
+ if (!appDir) {
33
+ console.error('No app/ or src/app/ directory found. Run this from the root of a Next.js App Router project.');
29
34
  process.exit(1);
30
35
  }
31
- write(join(cwd, 'app/robots.ts'), `export { default } from '@ignite-agent/agent/robots'\n`);
32
- write(join(cwd, 'app/sitemap.ts'), `export { default } from '@ignite-agent/agent/sitemap'\n`);
33
- write(join(cwd, 'app/w/[slug]/page.tsx'), `export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/wiki'\n`);
34
- write(join(cwd, 'app/blog/[slug]/page.tsx'), `export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/blog'\n`);
35
- write(join(cwd, 'app/blog/page.tsx'), `export { BlogIndex as default, revalidate } from '@ignite-agent/agent/blog'\n`);
36
+ write(join(appDir, 'robots.ts'), ROUTE_SOURCES.robots);
37
+ write(join(appDir, 'sitemap.ts'), ROUTE_SOURCES.sitemap);
38
+ write(join(appDir, 'w/[slug]/page.tsx'), ROUTE_SOURCES.wikiPage);
39
+ write(join(appDir, 'w/page.tsx'), ROUTE_SOURCES.wikiIndex);
40
+ write(join(appDir, 'blog/[slug]/page.tsx'), ROUTE_SOURCES.blogPage);
41
+ write(join(appDir, 'blog/page.tsx'), ROUTE_SOURCES.blogIndex);
36
42
  if (nextMajor(cwd) <= 15) {
37
- write(join(cwd, 'middleware.ts'), `export { middleware, config } from '@ignite-agent/agent/proxy'\n`);
43
+ write(join(cwd, 'middleware.ts'), ROUTE_SOURCES.middleware);
44
+ }
45
+ else {
46
+ write(join(cwd, 'proxy.ts'), ROUTE_SOURCES.proxy);
47
+ }
48
+ const design = detectDesignSystem(cwd);
49
+ const cssPath = findGlobalsCss(cwd, appDir);
50
+ const snippet = brandCssSnippet(cssPath ? readFileSync(cssPath, 'utf8') : null, design);
51
+ if (cssPath) {
52
+ const result = injectBrandCss(cssPath, snippet);
53
+ console.log(result === 'wrote' ? ` write ${rel(cwd, cssPath)} (--ignite-* variables)` : ` skip ${rel(cwd, cssPath)} (already has --ignite-* variables)`);
38
54
  }
39
55
  else {
40
- write(join(cwd, 'proxy.ts'), `export { proxy, config } from '@ignite-agent/agent/proxy'\n`);
56
+ console.log('\nNo globals.css found. Add these variables to your global CSS so wiki/blog pages inherit your brand:');
57
+ console.log(snippet);
58
+ }
59
+ if (design === 'shadcn') {
60
+ console.log('Detected shadcn/ui. Mapped --ignite-* from --foreground/--primary. If those are raw HSL channels, keep the hsl() wrappers.');
61
+ }
62
+ else if (design === 'tailwind') {
63
+ console.log('Detected Tailwind. Mapped --ignite-* from common theme variables when present.');
41
64
  }
42
- console.log('\nAdd <IgniteJsonLd /> to app/layout.tsx:');
65
+ console.log('\nAdd <IgniteJsonLd /> to app/layout.tsx (or src/app/layout.tsx):');
43
66
  console.log(` import { IgniteJsonLd } from '@ignite-agent/agent/jsonld' // then render <IgniteJsonLd /> in <head>`);
67
+ console.log('\nOptional layout wrapper (keep it a Server Component):');
68
+ console.log(` import WikiPage, { generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/wiki'`);
69
+ console.log(` export { generateStaticParams, generateMetadata, revalidate }`);
70
+ console.log(` export default function Page(props: { params: Promise<{ slug: string }> }) {`);
71
+ console.log(` return <main><WikiPage {...props} /></main>`);
72
+ console.log(` }`);
73
+ const hostRoutes = hostOwnedContentRoutes(appDir);
74
+ if (hostRoutes.length > 0) {
75
+ console.log('\nExisting blog/wiki routes were left untouched (never overwritten).');
76
+ console.log('Wrap them so local slugs keep winning and Hub pages fill the gaps:');
77
+ const printed = new Set();
78
+ for (const route of hostRoutes) {
79
+ const kind = route.kind === 'wiki' || route.kind === 'wiki-index' ? 'wiki' : 'blog';
80
+ if (printed.has(kind))
81
+ continue;
82
+ printed.add(kind);
83
+ console.log(`\n--- ${kind} (${route.rel}) ---\n${migrateExistingSnippet(kind)}`);
84
+ }
85
+ console.log('Full notes: onboarding/MIGRATE-EXISTING.md');
86
+ }
87
+ if (inspectRouteFile(join(appDir, 'sitemap.ts')) === 'host') {
88
+ console.log('\nExisting sitemap.ts was left untouched. Merge wiki/blog URLs in:');
89
+ console.log(migrateSitemapSnippet());
90
+ }
44
91
  console.log('\nSet IGNITE_SITE_ID and IGNITE_SITE_TOKEN in .env.local and in your host, then deploy.');
45
92
  console.log('Keep IGNITE_SITE_TOKEN on the server. Never prefix it with NEXT_PUBLIC_.');
46
93
  }
47
94
  async function doctor() {
48
- const siteId = process.env.IGNITE_SITE_ID?.trim();
49
- const token = process.env.IGNITE_SITE_TOKEN?.trim();
50
- if (!siteId || !token) {
51
- console.error('Missing IGNITE_SITE_ID or IGNITE_SITE_TOKEN. Run `ignite connect` or set them in your env.');
52
- process.exit(1);
95
+ const cwd = process.cwd();
96
+ const env = { ...process.env };
97
+ loadEnvFile(join(cwd, '.env.local'), env);
98
+ const findings = diagnoseProject(cwd, env);
99
+ for (const finding of findings) {
100
+ const tag = finding.level === 'ok' ? 'ok ' : finding.level === 'warn' ? 'warn' : 'fail';
101
+ console.log(`${tag} ${finding.message}`);
53
102
  }
103
+ const failed = findings.some((finding) => finding.level === 'fail');
104
+ if (failed)
105
+ process.exit(1);
106
+ const siteId = env.IGNITE_SITE_ID?.trim();
107
+ const token = env.IGNITE_SITE_TOKEN?.trim();
108
+ const hubUrl = (env.IGNITE_HUB_URL?.trim() || HUB_URL).replace(/\/+$/, '');
109
+ if (!siteId || !token)
110
+ process.exit(1);
54
111
  try {
55
112
  const headers = { 'X-Ignite-Site-Token': token };
56
- const directives = await fetch(`${HUB_URL}/v1/sites/${siteId}/agent-directives`, { headers });
57
- const pages = await fetch(`${HUB_URL}/v1/sites/${siteId}/pages`, { headers });
113
+ const directives = await fetch(`${hubUrl}/v1/sites/${siteId}/agent-directives`, { headers });
114
+ const pages = await fetch(`${hubUrl}/v1/sites/${siteId}/pages`, { headers });
58
115
  const ok = directives.ok && pages.ok;
59
116
  console.log(ok
60
- ? `ok reached ${HUB_URL} (directives ${directives.status}, pages ${pages.status})`
61
- : `fail HTTP directives ${directives.status} pages ${pages.status} from ${HUB_URL}`);
117
+ ? `ok reached ${hubUrl} (directives ${directives.status}, pages ${pages.status})`
118
+ : `fail HTTP directives ${directives.status} pages ${pages.status} from ${hubUrl}`);
62
119
  process.exit(ok ? 0 : 1);
63
120
  }
64
121
  catch (error) {
65
- console.error(`fail could not reach ${HUB_URL}: ${error.message}`);
122
+ console.error(`fail could not reach ${hubUrl}: ${error.message}`);
66
123
  process.exit(1);
67
124
  }
68
125
  }
@@ -153,10 +210,10 @@ switch (command) {
153
210
  break;
154
211
  default:
155
212
  console.log('Usage: ignite <init|connect|confirm|doctor|mcp>');
156
- console.log(' init write robots, sitemap, wiki/blog routes, proxy or middleware');
213
+ console.log(' init write robots, sitemap, wiki/blog routes, proxy or middleware, brand CSS if possible');
157
214
  console.log(' connect start the site activation handshake (--site-url --email)');
158
215
  console.log(' confirm finish activation and write .env.local (--activation --code)');
159
- console.log(' doctor check config and reach the Ignite API');
216
+ console.log(' doctor check config, routes, token placement, and reach the Ignite API');
160
217
  console.log(' mcp stdio MCP for coding agents (reads the same feed; not for the front end)');
161
218
  }
162
219
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export type DesignSystem = 'shadcn' | 'tailwind' | 'unknown';
2
+ export type DoctorFinding = {
3
+ level: 'ok' | 'warn' | 'fail';
4
+ message: string;
5
+ };
6
+ export declare const ROUTE_SOURCES: {
7
+ readonly robots: "export { default } from '@ignite-agent/agent/robots'\n";
8
+ readonly sitemap: "export { default } from '@ignite-agent/agent/sitemap'\n";
9
+ readonly wikiPage: "export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/wiki'\n";
10
+ readonly wikiIndex: "export { WikiIndex as default, revalidate } from '@ignite-agent/agent/wiki'\n";
11
+ readonly blogPage: "export { default, generateStaticParams, generateMetadata, revalidate } from '@ignite-agent/agent/blog'\n";
12
+ readonly blogIndex: "export { BlogIndex as default, revalidate } from '@ignite-agent/agent/blog'\n";
13
+ readonly middleware: "export { middleware, config } from '@ignite-agent/agent/proxy'\n";
14
+ readonly proxy: "export { proxy, config } from '@ignite-agent/agent/proxy'\n";
15
+ };
16
+ export declare function resolveAppDir(cwd: string): string | null;
17
+ export declare function detectDesignSystem(cwd: string): DesignSystem;
18
+ export declare function findGlobalsCss(cwd: string, appDir: string): string | null;
19
+ export declare function loadEnvFile(path: string, env: NodeJS.Dict<string>): void;
20
+ export declare function brandCssSnippet(globalsCss: string | null, design: DesignSystem): string;
21
+ export type RouteOwner = 'missing' | 'ignite' | 'host';
22
+ export declare function inspectRouteFile(path: string): RouteOwner;
23
+ export declare function migrateSitemapSnippet(): string;
24
+ export declare function hostOwnedContentRoutes(appDir: string): Array<{
25
+ rel: string;
26
+ kind: 'blog' | 'wiki' | 'blog-index' | 'wiki-index';
27
+ }>;
28
+ export declare function migrateExistingSnippet(kind: 'blog' | 'wiki'): string;
29
+ export declare function injectBrandCss(cssPath: string, snippet: string): 'wrote' | 'skipped';
30
+ export declare function diagnoseProject(cwd: string, env: NodeJS.Dict<string>): DoctorFinding[];
31
+ export declare function colorMapping(globalsCss: string | null, design: DesignSystem): {
32
+ text: string;
33
+ muted: string;
34
+ primary: string;
35
+ border: string;
36
+ fontSans: string;
37
+ fontHeading: string;
38
+ radius: string;
39
+ };