blume 2.0.0 → 2.0.1
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/AGENTS.md +1 -1
- package/CHANGELOG.md +28 -0
- package/README.md +2 -2
- package/dist/cli/{chunk-f7t03s3g.js → chunk-27g6wdth.js} +2 -2
- package/dist/cli/{chunk-mnqj32sj.js → chunk-2hn4b8z7.js} +13 -13
- package/dist/cli/chunk-2hn4b8z7.js.map +12 -0
- package/dist/cli/{chunk-by2290sx.js → chunk-5shv93fd.js} +2 -2
- package/dist/cli/{chunk-a9kptbw5.js → chunk-6crbhc3x.js} +3 -3
- package/dist/cli/{chunk-a9kptbw5.js.map → chunk-6crbhc3x.js.map} +1 -1
- package/dist/cli/{chunk-mwt1k8n7.js → chunk-6hsn950k.js} +20 -20
- package/dist/cli/chunk-6hsn950k.js.map +10 -0
- package/dist/cli/{chunk-11j0384y.js → chunk-6vm74dry.js} +13 -13
- package/dist/cli/{chunk-11j0384y.js.map → chunk-6vm74dry.js.map} +3 -3
- package/dist/cli/{chunk-j8mw0za6.js → chunk-79jhk4py.js} +8 -8
- package/dist/cli/{chunk-j8mw0za6.js.map → chunk-79jhk4py.js.map} +2 -2
- package/dist/cli/{chunk-nk3ts2xk.js → chunk-82bbrxdn.js} +2 -2
- package/dist/cli/{chunk-2q1dwty4.js → chunk-ah61y8py.js} +8 -8
- package/dist/cli/{chunk-2q1dwty4.js.map → chunk-ah61y8py.js.map} +4 -4
- package/dist/cli/{chunk-zxccj738.js → chunk-ce574jw2.js} +1 -1
- package/dist/cli/{chunk-y3e45rc8.js → chunk-ch6g3ar0.js} +3 -3
- package/dist/cli/{chunk-beat36xx.js → chunk-dh8cwk36.js} +5 -5
- package/dist/cli/{chunk-beat36xx.js.map → chunk-dh8cwk36.js.map} +2 -2
- package/dist/cli/{chunk-1w8dp3qb.js → chunk-epjnccmv.js} +13 -13
- package/dist/cli/{chunk-ernrthtr.js → chunk-f2z5v128.js} +13 -13
- package/dist/cli/{chunk-zg2gtj10.js → chunk-fs23ddbb.js} +2 -2
- package/dist/cli/{chunk-7ez8ny0t.js → chunk-fxypxtvm.js} +2 -2
- package/dist/cli/{chunk-tzne8qfq.js → chunk-fz5wtpmh.js} +13 -13
- package/dist/cli/{chunk-b5aj94ah.js → chunk-hdpx1tax.js} +4 -4
- package/dist/cli/{chunk-d80hr03s.js → chunk-jwyddg7y.js} +9 -9
- package/dist/cli/{chunk-d80hr03s.js.map → chunk-jwyddg7y.js.map} +2 -2
- package/dist/cli/{chunk-fh5hj5jt.js → chunk-kdp5q7ke.js} +15 -15
- package/dist/cli/{chunk-6k8vp3ta.js → chunk-kpf8rrjc.js} +9 -9
- package/dist/cli/{chunk-6k8vp3ta.js.map → chunk-kpf8rrjc.js.map} +3 -3
- package/dist/cli/{chunk-5a2z0198.js → chunk-m3vmjgmq.js} +9 -9
- package/dist/cli/{chunk-5a2z0198.js.map → chunk-m3vmjgmq.js.map} +2 -2
- package/dist/cli/{chunk-bctazmbk.js → chunk-mb2919y2.js} +4 -4
- package/dist/cli/{chunk-79njf86q.js → chunk-q5163e60.js} +13 -13
- package/dist/cli/{chunk-xaz13gwg.js → chunk-qkqwkpte.js} +196 -208
- package/dist/cli/{chunk-xaz13gwg.js.map → chunk-qkqwkpte.js.map} +48 -48
- package/dist/cli/{chunk-sqn5t4q0.js → chunk-qs4q5p4e.js} +3 -3
- package/dist/cli/{chunk-bw22s759.js → chunk-qwsrynx5.js} +1 -1
- package/dist/cli/{chunk-z01ze5c1.js → chunk-s1p84fyh.js} +15 -15
- package/dist/cli/{chunk-pnnvybbk.js → chunk-s6jhgk0q.js} +5 -5
- package/dist/cli/{chunk-pnnvybbk.js.map → chunk-s6jhgk0q.js.map} +2 -2
- package/dist/cli/{chunk-f2972sbt.js → chunk-vtk4a6dg.js} +1 -1
- package/dist/cli/{chunk-z1f5arsg.js → chunk-wgm7m9qk.js} +21 -21
- package/dist/cli/{chunk-z1f5arsg.js.map → chunk-wgm7m9qk.js.map} +4 -4
- package/dist/cli/{chunk-bnbmcwfb.js → chunk-wm7js3j9.js} +5 -5
- package/dist/cli/{chunk-bnbmcwfb.js.map → chunk-wm7js3j9.js.map} +3 -3
- package/dist/cli/{chunk-d1tadaw7.js → chunk-yt5n7ppj.js} +3 -3
- package/dist/cli/{chunk-pat2zzwc.js → chunk-yw7dm696.js} +1 -1
- package/dist/cli/{chunk-pat2zzwc.js.map → chunk-yw7dm696.js.map} +1 -1
- package/dist/cli/{chunk-88cpgt6h.js → chunk-zxcczpyx.js} +1 -1
- package/dist/cli/{chunk-41za066z.js → chunk-zxh4d9vy.js} +4 -4
- package/dist/cli/index.js +17 -17
- package/dist/types/ai/agent-readability.d.ts +1 -1
- package/dist/types/ai/api/paths.d.ts +1 -1
- package/dist/types/ai/ask-context.d.ts +7 -7
- package/dist/types/ai/ask.d.ts +43 -43
- package/dist/types/ai/index.d.ts +3 -3
- package/dist/types/ai/openapi-components.d.ts +1 -1
- package/dist/types/ai/serializers.d.ts +1 -1
- package/dist/types/ai/visibility.d.ts +1 -1
- package/dist/types/core/config-input.d.ts +17 -17
- package/dist/types/core/config.d.ts +3 -3
- package/dist/types/core/data.d.ts +3 -3
- package/dist/types/core/i18n-ui.d.ts +6 -8
- package/dist/types/core/schema.d.ts +5 -5
- package/dist/types/core/unrecognized-keys.d.ts +1 -1
- package/dist/types/search/documents.d.ts +1 -1
- package/dist/types/search/orama-index.d.ts +1 -1
- package/docs/02-deployment.mdx +4 -4
- package/docs/03-upgrading.mdx +22 -9
- package/docs/04-migrating.mdx +4 -4
- package/docs/08-faq.mdx +3 -3
- package/docs/advanced/custom-pages.mdx +2 -2
- package/docs/advanced/skills.mdx +1 -1
- package/docs/cli/audit.mdx +3 -3
- package/docs/cli/doctor.mdx +3 -3
- package/docs/cli/evals.mdx +7 -7
- package/docs/cli/index.mdx +2 -2
- package/docs/cli/translate.mdx +8 -8
- package/docs/configuration/{ask-ai.mdx → assistant.mdx} +19 -19
- package/docs/configuration/customization.mdx +2 -2
- package/docs/configuration/index.mdx +2 -2
- package/docs/configuration/meta.ts +1 -1
- package/docs/configuration/search.mdx +1 -1
- package/docs/content/i18n.mdx +2 -2
- package/docs/content/islands.mdx +1 -1
- package/docs/discoverability/agent-discovery.mdx +1 -1
- package/docs/discoverability/index.mdx +1 -1
- package/docs/index.mdx +2 -2
- package/package.json +1 -1
- package/skills/blume/SKILL.md +5 -5
- package/skills/blume-migrate/SKILL.md +2 -2
- package/src/ai/agent-readability.ts +4 -4
- package/src/ai/api/paths.ts +1 -1
- package/src/ai/ask-context.ts +7 -7
- package/src/ai/ask-data.ts +2 -2
- package/src/ai/ask.ts +84 -71
- package/src/ai/cors.ts +3 -3
- package/src/ai/index.ts +16 -16
- package/src/ai/openapi-components.ts +1 -1
- package/src/ai/serializers.ts +1 -1
- package/src/ai/visibility.ts +1 -1
- package/src/astro/generate.ts +19 -18
- package/src/astro/module-types.ts +1 -1
- package/src/astro/runtime-deps.ts +6 -6
- package/src/astro/templates.ts +26 -26
- package/src/blume-modules.d.ts +2 -2
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/doctor.ts +7 -5
- package/src/cli/commands/eval.ts +3 -3
- package/src/cli/commands/migrate.ts +2 -2
- package/src/cli/commands/translate.ts +3 -3
- package/src/cli/commands/upgrade.ts +2 -2
- package/src/cli/required-secrets.ts +3 -3
- package/src/components/copy-feedback.ts +1 -1
- package/src/components/islands/{AskAI.astro → Assistant.astro} +10 -10
- package/src/components/islands/{ask-ai.tsx → assistant.tsx} +23 -23
- package/src/components/islands/hooks.ts +14 -12
- package/src/components/layout/Header.astro +10 -10
- package/src/components/layout/PageLayout.astro +6 -6
- package/src/components/layout/Pagination.astro +7 -7
- package/src/components/layout/ReferenceLayout.astro +1 -1
- package/src/components/layout/RootLayout.astro +6 -6
- package/src/components/layout/Search.astro +13 -13
- package/src/components/layout/analytics-client.ts +1 -1
- package/src/components/layout/drawer-inert.ts +1 -1
- package/src/components/openapi/description.ts +2 -2
- package/src/core/code-fences.ts +1 -1
- package/src/core/config-input.ts +19 -19
- package/src/core/config.ts +3 -3
- package/src/core/data.ts +3 -3
- package/src/core/i18n-ui.ts +35 -9
- package/src/core/request-body.ts +1 -1
- package/src/core/schema.ts +25 -20
- package/src/core/server-features.ts +2 -2
- package/src/core/ui-packs/ar.ts +4 -5
- package/src/core/ui-packs/bg.ts +4 -5
- package/src/core/ui-packs/bn.ts +4 -5
- package/src/core/ui-packs/ca.ts +4 -5
- package/src/core/ui-packs/cs.ts +4 -5
- package/src/core/ui-packs/da.ts +4 -5
- package/src/core/ui-packs/de.ts +4 -5
- package/src/core/ui-packs/el.ts +4 -5
- package/src/core/ui-packs/es.ts +4 -5
- package/src/core/ui-packs/fa.ts +4 -5
- package/src/core/ui-packs/fi.ts +4 -5
- package/src/core/ui-packs/fr.ts +4 -5
- package/src/core/ui-packs/he.ts +4 -5
- package/src/core/ui-packs/hi.ts +4 -5
- package/src/core/ui-packs/hr.ts +4 -5
- package/src/core/ui-packs/hu.ts +4 -5
- package/src/core/ui-packs/id.ts +4 -5
- package/src/core/ui-packs/it.ts +4 -5
- package/src/core/ui-packs/ja.ts +4 -5
- package/src/core/ui-packs/ko.ts +4 -5
- package/src/core/ui-packs/nl.ts +4 -5
- package/src/core/ui-packs/no.ts +4 -5
- package/src/core/ui-packs/pl.ts +4 -5
- package/src/core/ui-packs/pt-br.ts +4 -5
- package/src/core/ui-packs/pt.ts +4 -5
- package/src/core/ui-packs/ro.ts +4 -5
- package/src/core/ui-packs/ru.ts +4 -5
- package/src/core/ui-packs/sk.ts +4 -5
- package/src/core/ui-packs/sr.ts +4 -5
- package/src/core/ui-packs/sv.ts +4 -5
- package/src/core/ui-packs/th.ts +4 -5
- package/src/core/ui-packs/tr.ts +4 -5
- package/src/core/ui-packs/uk.ts +4 -5
- package/src/core/ui-packs/vi.ts +4 -5
- package/src/core/ui-packs/zh-tw.ts +4 -5
- package/src/core/ui-packs/zh.ts +4 -5
- package/src/core/unrecognized-keys.ts +1 -1
- package/src/registry/eject.ts +19 -18
- package/src/search/documents.ts +2 -2
- package/src/search/orama-index.ts +1 -1
- package/src/translate/report.ts +1 -1
- package/src/upgrade/upgrade.ts +1 -1
- package/dist/cli/chunk-mnqj32sj.js.map +0 -12
- package/dist/cli/chunk-mwt1k8n7.js.map +0 -10
- /package/dist/cli/{chunk-f7t03s3g.js.map → chunk-27g6wdth.js.map} +0 -0
- /package/dist/cli/{chunk-by2290sx.js.map → chunk-5shv93fd.js.map} +0 -0
- /package/dist/cli/{chunk-nk3ts2xk.js.map → chunk-82bbrxdn.js.map} +0 -0
- /package/dist/cli/{chunk-zxccj738.js.map → chunk-ce574jw2.js.map} +0 -0
- /package/dist/cli/{chunk-y3e45rc8.js.map → chunk-ch6g3ar0.js.map} +0 -0
- /package/dist/cli/{chunk-1w8dp3qb.js.map → chunk-epjnccmv.js.map} +0 -0
- /package/dist/cli/{chunk-ernrthtr.js.map → chunk-f2z5v128.js.map} +0 -0
- /package/dist/cli/{chunk-zg2gtj10.js.map → chunk-fs23ddbb.js.map} +0 -0
- /package/dist/cli/{chunk-7ez8ny0t.js.map → chunk-fxypxtvm.js.map} +0 -0
- /package/dist/cli/{chunk-tzne8qfq.js.map → chunk-fz5wtpmh.js.map} +0 -0
- /package/dist/cli/{chunk-b5aj94ah.js.map → chunk-hdpx1tax.js.map} +0 -0
- /package/dist/cli/{chunk-fh5hj5jt.js.map → chunk-kdp5q7ke.js.map} +0 -0
- /package/dist/cli/{chunk-bctazmbk.js.map → chunk-mb2919y2.js.map} +0 -0
- /package/dist/cli/{chunk-79njf86q.js.map → chunk-q5163e60.js.map} +0 -0
- /package/dist/cli/{chunk-sqn5t4q0.js.map → chunk-qs4q5p4e.js.map} +0 -0
- /package/dist/cli/{chunk-bw22s759.js.map → chunk-qwsrynx5.js.map} +0 -0
- /package/dist/cli/{chunk-z01ze5c1.js.map → chunk-s1p84fyh.js.map} +0 -0
- /package/dist/cli/{chunk-f2972sbt.js.map → chunk-vtk4a6dg.js.map} +0 -0
- /package/dist/cli/{chunk-d1tadaw7.js.map → chunk-yt5n7ppj.js.map} +0 -0
- /package/dist/cli/{chunk-88cpgt6h.js.map → chunk-zxcczpyx.js.map} +0 -0
- /package/dist/cli/{chunk-41za066z.js.map → chunk-zxh4d9vy.js.map} +0 -0
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
VERSION_ID,
|
|
9
9
|
VERSION_LIKE,
|
|
10
10
|
versionizeRoute
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-qkqwkpte.js";
|
|
12
12
|
import {
|
|
13
13
|
stripBasePath
|
|
14
14
|
} from "./chunk-jts8mvcz.js";
|
|
15
15
|
import {
|
|
16
16
|
isWithin,
|
|
17
17
|
scanProject
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-fs23ddbb.js";
|
|
19
19
|
|
|
20
20
|
// src/core/version-cut.ts
|
|
21
21
|
import { existsSync } from "node:fs";
|
|
@@ -262,4 +262,4 @@ var cutVersion = async (root, id, options = {}) => {
|
|
|
262
262
|
export { CutError, unregisteredSnapshotDiagnostics, cutVersion };
|
|
263
263
|
|
|
264
264
|
//# debugId=B376AC6B634C865364756E2164756E21
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
265
|
+
//# sourceMappingURL=chunk-qs4q5p4e.js.map
|
|
@@ -959,4 +959,4 @@ var launchInstalledAgent = async (bin, prompt, platform = process.platform) => {
|
|
|
959
959
|
export { CHECKS, finding, formatReport, reportJson, formatCatalog, AGENTS, writeAgentReport, fixPrompt, launchAgent, launchInstalledAgent };
|
|
960
960
|
|
|
961
961
|
//# debugId=0DEBBF082B3707F764756E2164756E21
|
|
962
|
-
//# sourceMappingURL=chunk-
|
|
962
|
+
//# sourceMappingURL=chunk-qwsrynx5.js.map
|
|
@@ -5,46 +5,46 @@ import {
|
|
|
5
5
|
} from "./index.js";
|
|
6
6
|
import {
|
|
7
7
|
deployPlatform
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-qkqwkpte.js";
|
|
9
9
|
import"./chunk-jts8mvcz.js";
|
|
10
|
-
import"./chunk-
|
|
10
|
+
import"./chunk-fs23ddbb.js";
|
|
11
11
|
import {
|
|
12
12
|
publishBuildProject,
|
|
13
13
|
ogCacheDir,
|
|
14
14
|
pruneCardCache,
|
|
15
15
|
cardCacheTally
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import"./chunk-
|
|
16
|
+
} from "./chunk-wgm7m9qk.js";
|
|
17
|
+
import"./chunk-6crbhc3x.js";
|
|
18
18
|
import {
|
|
19
19
|
deployOutputDir,
|
|
20
20
|
deployStaticDir,
|
|
21
21
|
surfaceAdapterOutput
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-82bbrxdn.js";
|
|
23
23
|
import {
|
|
24
24
|
ensureGitignore
|
|
25
25
|
} from "./chunk-yzhm0j9q.js";
|
|
26
|
-
import"./chunk-
|
|
26
|
+
import"./chunk-vtk4a6dg.js";
|
|
27
27
|
import {
|
|
28
28
|
removedBuildFlags,
|
|
29
29
|
flagList,
|
|
30
30
|
removedBuildFlagsAdvice
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-dh8cwk36.js";
|
|
32
32
|
import {
|
|
33
33
|
refuseIfDevRunning
|
|
34
|
-
} from "./chunk-
|
|
35
|
-
import"./chunk-
|
|
34
|
+
} from "./chunk-27g6wdth.js";
|
|
35
|
+
import"./chunk-2hn4b8z7.js";
|
|
36
36
|
import {
|
|
37
37
|
refuseIfEjected
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-yt5n7ppj.js";
|
|
39
39
|
import"./chunk-jq5n4avg.js";
|
|
40
|
-
import"./chunk-
|
|
41
|
-
import"./chunk-
|
|
40
|
+
import"./chunk-zxcczpyx.js";
|
|
41
|
+
import"./chunk-wm7js3j9.js";
|
|
42
42
|
import {
|
|
43
43
|
prepareProject
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-zxh4d9vy.js";
|
|
45
45
|
import {
|
|
46
46
|
serverFeatures
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-ah61y8py.js";
|
|
48
48
|
|
|
49
49
|
// src/cli/commands/build.ts
|
|
50
50
|
import { existsSync } from "node:fs";
|
|
@@ -258,4 +258,4 @@ export {
|
|
|
258
258
|
};
|
|
259
259
|
|
|
260
260
|
//# debugId=7C559CDFA7F83DB064756E2164756E21
|
|
261
|
-
//# sourceMappingURL=chunk-
|
|
261
|
+
//# sourceMappingURL=chunk-s1p84fyh.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
AGENTS,
|
|
11
11
|
launchInstalledAgent
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-qwsrynx5.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/commands/migrate.ts
|
|
15
15
|
import { defineCommand } from "citty";
|
|
@@ -118,7 +118,7 @@ var migrateCommand = defineCommand({
|
|
|
118
118
|
const root = process.cwd();
|
|
119
119
|
const agents = Object.keys(AGENTS).filter((kind) => args[kind]);
|
|
120
120
|
if (agents.length > 1) {
|
|
121
|
-
logger.error("Pass at most one of --
|
|
121
|
+
logger.error("Pass at most one of --codex or --claude.");
|
|
122
122
|
process.exit(1);
|
|
123
123
|
}
|
|
124
124
|
const [agent] = agents;
|
|
@@ -139,7 +139,7 @@ var migrateCommand = defineCommand({
|
|
|
139
139
|
}
|
|
140
140
|
const skillDir = join2(packageRoot(), MIGRATE_SKILL_DIR);
|
|
141
141
|
if (!agent) {
|
|
142
|
-
process.stderr.write(` blume migrate runs the migration with a coding agent: rerun with --
|
|
142
|
+
process.stderr.write(` blume migrate runs the migration with a coding agent: rerun with --codex or --claude.
|
|
143
143
|
Using another agent? Point it at ${join2(skillDir, "SKILL.md")},
|
|
144
144
|
or install the skill where your agent looks for skills: npx skills add haydenbleasel/blume --skill blume-migrate
|
|
145
145
|
`);
|
|
@@ -172,5 +172,5 @@ export {
|
|
|
172
172
|
migrateCommand
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
//# debugId=
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# debugId=A9196D6CE8B0C0B464756E2164756E21
|
|
176
|
+
//# sourceMappingURL=chunk-s6jhgk0q.js.map
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli/commands/migrate.ts", "../src/migrate/migrate.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { AGENTS, launchInstalledAgent } from \"../../audit/agent.ts\";\nimport type { AgentKind } from \"../../audit/agent.ts\";\nimport { packageRoot } from \"../../core/package-root.ts\";\nimport { getBlumeVersion } from \"../../core/version.ts\";\nimport {\n MIGRATE_SKILL_DIR,\n MIGRATE_SOURCES,\n MIGRATE_SOURCE_NAMES,\n detectMigrateSource,\n isMigrateSource,\n migratePrompt,\n} from \"../../migrate/migrate.ts\";\nimport type { MigrateSourceId } from \"../../migrate/migrate.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { reportInternalError } from \"../internal-error.ts\";\nimport { logger } from \"../log.ts\";\n\n/**\n * `blume migrate [source]` — move a docs site from another framework to Blume\n * with a coding agent. Run it through the package runner (`npx blume migrate\n * fumadocs --claude`) in the site being migrated: it names the source (or\n * detects it), then opens Claude Code or Codex on the `blume-migrate` skill\n * bundled in this package, the way `blume audit --claude` hands off its\n * findings. The judgment stays in the skill; the command is the front door.\n * Status lines go straight to stderr: consola drops info-level lines in test\n * and CI environments.\n */\nexport const migrateCommand = defineCommand({\n args: {\n claude: {\n description: \"Run the migration with Claude Code.\",\n type: \"boolean\",\n },\n codex: {\n description: \"Run the migration with Codex.\",\n type: \"boolean\",\n },\n source: {\n description: `The framework to migrate from: ${MIGRATE_SOURCES.join(\" | \")}. Detected when omitted.`,\n required: false,\n type: \"positional\",\n },\n },\n meta: commandMeta.migrate,\n async run({ args }) {\n const root = process.cwd();\n // SAFETY: AGENTS is a closed record keyed by AgentKind, so its keys are\n // exactly the agent kinds.\n const agents = (Object.keys(AGENTS) as AgentKind[]).filter(\n (kind) => args[kind]\n );\n if (agents.length > 1) {\n logger.error(\"Pass at most one of --
|
|
5
|
+
"import { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { AGENTS, launchInstalledAgent } from \"../../audit/agent.ts\";\nimport type { AgentKind } from \"../../audit/agent.ts\";\nimport { packageRoot } from \"../../core/package-root.ts\";\nimport { getBlumeVersion } from \"../../core/version.ts\";\nimport {\n MIGRATE_SKILL_DIR,\n MIGRATE_SOURCES,\n MIGRATE_SOURCE_NAMES,\n detectMigrateSource,\n isMigrateSource,\n migratePrompt,\n} from \"../../migrate/migrate.ts\";\nimport type { MigrateSourceId } from \"../../migrate/migrate.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { reportInternalError } from \"../internal-error.ts\";\nimport { logger } from \"../log.ts\";\n\n/**\n * `blume migrate [source]` — move a docs site from another framework to Blume\n * with a coding agent. Run it through the package runner (`npx blume migrate\n * fumadocs --claude`) in the site being migrated: it names the source (or\n * detects it), then opens Claude Code or Codex on the `blume-migrate` skill\n * bundled in this package, the way `blume audit --claude` hands off its\n * findings. The judgment stays in the skill; the command is the front door.\n * Status lines go straight to stderr: consola drops info-level lines in test\n * and CI environments.\n */\nexport const migrateCommand = defineCommand({\n args: {\n claude: {\n description: \"Run the migration with Claude Code.\",\n type: \"boolean\",\n },\n codex: {\n description: \"Run the migration with Codex.\",\n type: \"boolean\",\n },\n source: {\n description: `The framework to migrate from: ${MIGRATE_SOURCES.join(\" | \")}. Detected when omitted.`,\n required: false,\n type: \"positional\",\n },\n },\n meta: commandMeta.migrate,\n async run({ args }) {\n const root = process.cwd();\n // SAFETY: AGENTS is a closed record keyed by AgentKind, so its keys are\n // exactly the agent kinds.\n const agents = (Object.keys(AGENTS) as AgentKind[]).filter(\n (kind) => args[kind]\n );\n if (agents.length > 1) {\n logger.error(\"Pass at most one of --codex or --claude.\");\n process.exit(1);\n }\n const [agent] = agents;\n if (args.source && !isMigrateSource(args.source)) {\n logger.error(\n `Unknown source \"${args.source}\" (use ${MIGRATE_SOURCES.join(\" | \")}). Leave it out to detect the framework, or to migrate from one not listed.`\n );\n process.exit(1);\n }\n\n try {\n const detected = await detectMigrateSource(root);\n const named: MigrateSourceId | null =\n args.source && isMigrateSource(args.source) ? args.source : null;\n const source = named ?? detected?.source ?? null;\n process.stderr.write(\n source\n ? ` Migrating from ${MIGRATE_SOURCE_NAMES[source]}${named ? \"\" : ` (detected from ${detected?.evidence})`}.\\n`\n : \" Couldn't detect the docs framework; the agent will inventory the repo first.\\n\"\n );\n // A named source wins, but a repo that looks like another framework is\n // worth a second look before an agent rewrites it on the wrong mappings.\n if (named && detected && detected.source !== named) {\n process.stderr.write(\n ` Warning: this looks like a ${MIGRATE_SOURCE_NAMES[detected.source]} project (${detected.evidence}); migrating from ${MIGRATE_SOURCE_NAMES[named]} as named.\\n`\n );\n }\n const skillDir = join(packageRoot(), MIGRATE_SKILL_DIR);\n\n // Without an agent flag the command is the pointer for any other agent:\n // the bundled skill's path (which lives in a throwaway cache under npx),\n // plus the install line that puts the skill where agents look for it.\n if (!agent) {\n process.stderr.write(\n ` blume migrate runs the migration with a coding agent: rerun with --codex or --claude.\\n Using another agent? Point it at ${join(skillDir, \"SKILL.md\")},\\n or install the skill where your agent looks for skills: npx skills add haydenbleasel/blume --skill blume-migrate\\n`\n );\n return;\n }\n\n const cli = AGENTS[agent];\n process.stderr.write(` Handing the migration to ${cli.name}…\\n\\n`);\n const code = await launchInstalledAgent(\n cli.bin,\n migratePrompt({\n detected,\n skillDir,\n source,\n version: getBlumeVersion(),\n })\n );\n if (code === null) {\n logger.error(\n `${cli.name} (\\`${cli.bin}\\`) was not found on PATH. Install it with \\`${cli.install}\\`.`\n );\n process.exit(1);\n }\n if (code !== 0) {\n process.exit(code);\n }\n } catch (error) {\n reportInternalError(error);\n process.exit(1);\n }\n },\n});\n",
|
|
6
6
|
"import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\n\nimport { join } from \"pathe\";\n\n/**\n * `blume migrate`'s logic, kept out of the command module so it runs (and is\n * covered) in-process. Migration is judgment work — idiomatic navigation,\n * component rewrites, what to drop — so it stays in the `blume-migrate` skill,\n * shipped inside the package; this module only names the source (from the\n * argument, or detected from the repo's own files) and writes the prompt that\n * points a coding agent at the skill and that source's mappings.\n */\n\n/** The docs frameworks the skill has a mapping reference for. */\nexport const MIGRATE_SOURCES = [\n \"mintlify\",\n \"fumadocs\",\n \"docusaurus\",\n \"starlight\",\n \"nextra\",\n] as const;\n\nexport type MigrateSourceId = (typeof MIGRATE_SOURCES)[number];\n\n/** Display names, for messages and the prompt. */\nexport const MIGRATE_SOURCE_NAMES: Record<MigrateSourceId, string> = {\n docusaurus: \"Docusaurus\",\n fumadocs: \"Fumadocs\",\n mintlify: \"Mintlify\",\n nextra: \"Nextra\",\n starlight: \"Starlight\",\n};\n\n/** The skill's directory inside the published package. */\nexport const MIGRATE_SKILL_DIR = join(\"skills\", \"blume-migrate\");\n\nexport const isMigrateSource = (value: string): value is MigrateSourceId =>\n MIGRATE_SOURCES.some((source) => source === value);\n\n/** A detected source and the file or dependency that gave it away. */\nexport interface DetectedSource {\n evidence: string;\n source: MigrateSourceId;\n}\n\n/** The slice of `package.json` detection reads. */\ninterface PackageJson {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n}\n\n/** Every dependency the project's `package.json` names, or none when unreadable. */\nconst dependencyNames = async (root: string): Promise<Set<string>> => {\n const path = join(root, \"package.json\");\n if (!existsSync(path)) {\n return new Set();\n }\n try {\n // SAFETY: package.json is a JSON object; only its dependency maps are read.\n const pkg = JSON.parse(await readFile(path, \"utf-8\")) as PackageJson;\n return new Set([\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.devDependencies ?? {}),\n ]);\n } catch {\n // A malformed package.json is the agent's to deal with; detection just\n // falls back to the other signals.\n return new Set();\n }\n};\n\n/**\n * Each source's tell, in the order the skill's workflow checks them: a config\n * file the framework owns, or a dependency only it installs.\n */\nconst SIGNALS: {\n deps?: string[];\n files?: string[];\n source: MigrateSourceId;\n}[] = [\n { files: [\"docs.json\", \"mint.json\"], source: \"mintlify\" },\n {\n files: [\n \"docusaurus.config.ts\",\n \"docusaurus.config.js\",\n \"docusaurus.config.mjs\",\n \"docusaurus.config.cjs\",\n ],\n source: \"docusaurus\",\n },\n {\n deps: [\"fumadocs-core\", \"fumadocs-ui\", \"fumadocs-mdx\"],\n files: [\"source.config.ts\"],\n source: \"fumadocs\",\n },\n { deps: [\"nextra\"], source: \"nextra\" },\n { deps: [\"@astrojs/starlight\"], source: \"starlight\" },\n];\n\n/**\n * Detect the docs framework a project is built on from its own files, or\n * null when nothing gives it away (the skill still migrates any framework,\n * working from its general model instead of a mapping reference).\n */\nexport const detectMigrateSource = async (\n root: string\n): Promise<DetectedSource | null> => {\n const deps = await dependencyNames(root);\n for (const { deps: tells = [], files = [], source } of SIGNALS) {\n const file = files.find((name) => existsSync(join(root, name)));\n if (file) {\n return { evidence: file, source };\n }\n const dep = tells.find((name) => deps.has(name));\n if (dep) {\n return { evidence: `${dep} in package.json`, source };\n }\n }\n return null;\n};\n\n/**\n * The handoff prompt: follow the skill, where its mappings for this source\n * are, and the few rules worth restating — the target version, and that no\n * page or URL is lost.\n */\nexport const migratePrompt = (options: {\n detected: DetectedSource | null;\n skillDir: string;\n source: MigrateSourceId | null;\n version: string;\n}): string => {\n const { detected, skillDir, source, version } = options;\n const evidence =\n detected && detected.source === source\n ? ` (detected from ${detected.evidence})`\n : \"\";\n const sourceLine = source\n ? `The source is ${MIGRATE_SOURCE_NAMES[source]}${evidence}. Its exact mappings are in ${join(skillDir, \"references\", `${source}.md`)}.`\n : `The source framework wasn't detected, so inventory the repo first. If it's ${MIGRATE_SOURCES.map((id) => MIGRATE_SOURCE_NAMES[id]).join(\", \")}, read that framework's file in ${join(skillDir, \"references\")}; otherwise follow the skill's mental model directly.`;\n return `Migrate this documentation project to Blume ${version}.\n\nFollow the blume-migrate skill: read ${join(skillDir, \"SKILL.md\")} first and work through its migration workflow. Wherever the skill says \\`<skill>\\`, it means ${skillDir}.\n\n${sourceLine}\n\nAdd \\`blume@^${version}\\` as the docs package's dependency. Keep every page, and add a redirect for any URL that moves. Report everything you drop or approximate, and run the skill's verification steps before you finish.`;\n};\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
9
|
+
"debugId": "A9196D6CE8B0C0B464756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -371,4 +371,4 @@ var analyzeComponentOverrides = (source, filePath) => {
|
|
|
371
371
|
export { emptyComponentOverrides, ComponentOverridesError, analyzeComponentOverrides };
|
|
372
372
|
|
|
373
373
|
//# debugId=D84ED7D5A5A4CC7064756E2164756E21
|
|
374
|
-
//# sourceMappingURL=chunk-
|
|
374
|
+
//# sourceMappingURL=chunk-vtk4a6dg.js.map
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
isOpenApiSource,
|
|
47
47
|
buildRawMarkdown,
|
|
48
48
|
markdownRoutePaths
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-qkqwkpte.js";
|
|
50
50
|
import {
|
|
51
51
|
trimChar,
|
|
52
52
|
normalizeBasePath,
|
|
@@ -57,15 +57,15 @@ import {
|
|
|
57
57
|
import {
|
|
58
58
|
validateSearchPopularIcons,
|
|
59
59
|
validateNavTargets
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-fs23ddbb.js";
|
|
61
61
|
import {
|
|
62
62
|
buildSearchDocuments,
|
|
63
63
|
buildMcpData
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-6crbhc3x.js";
|
|
65
65
|
import {
|
|
66
66
|
emptyComponentOverrides,
|
|
67
67
|
analyzeComponentOverrides
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-vtk4a6dg.js";
|
|
69
69
|
import {
|
|
70
70
|
writeTextAtomic
|
|
71
71
|
} from "./chunk-jq5n4avg.js";
|
|
@@ -108,15 +108,15 @@ import {
|
|
|
108
108
|
examplesPageTemplate,
|
|
109
109
|
runtimePackageTemplate,
|
|
110
110
|
runtimeTsconfigTemplate
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-2hn4b8z7.js";
|
|
112
112
|
import {
|
|
113
113
|
registry
|
|
114
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-zxcczpyx.js";
|
|
115
115
|
import {
|
|
116
116
|
readClientMode,
|
|
117
117
|
discoverIslands,
|
|
118
118
|
missingDependencyDiagnostic
|
|
119
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-wm7js3j9.js";
|
|
120
120
|
|
|
121
121
|
// src/astro/integration.ts
|
|
122
122
|
import { join as join3, relative, resolve as resolve2 } from "pathe";
|
|
@@ -2991,9 +2991,9 @@ var buildRuntimeData = (project) => {
|
|
|
2991
2991
|
config: {
|
|
2992
2992
|
analytics: config.analytics,
|
|
2993
2993
|
appleIcon: resolveAppleIcon(project),
|
|
2994
|
-
|
|
2995
|
-
endpoint: config.ai.
|
|
2996
|
-
suggestions: config.ai.
|
|
2994
|
+
assistant: config.ai.assistant?.enabled ? {
|
|
2995
|
+
endpoint: config.ai.assistant.endpoint ?? null,
|
|
2996
|
+
suggestions: config.ai.assistant.suggestions
|
|
2997
2997
|
} : null,
|
|
2998
2998
|
banner: resolveBanner(config),
|
|
2999
2999
|
basePath: config.basePath,
|
|
@@ -3242,18 +3242,18 @@ var proxyAllowlistWarnings = (config, data) => {
|
|
|
3242
3242
|
return warnings;
|
|
3243
3243
|
};
|
|
3244
3244
|
var writeAskFiles = async (project, srcDir, write, modules) => {
|
|
3245
|
-
const {
|
|
3246
|
-
if (!(
|
|
3245
|
+
const { assistant } = project.config.ai;
|
|
3246
|
+
if (!(assistant?.enabled && !assistant.endpoint)) {
|
|
3247
3247
|
return;
|
|
3248
3248
|
}
|
|
3249
|
-
const backend = resolveAskBackend(
|
|
3249
|
+
const backend = resolveAskBackend(assistant.provider);
|
|
3250
3250
|
if (backend.grounded) {
|
|
3251
3251
|
modules.set("blume:ask-data", JSON.stringify(await buildAskData(project)));
|
|
3252
3252
|
}
|
|
3253
3253
|
await write(join11(srcDir, "pages", "api", "ask.ts"), askEndpointTemplate(backend, {
|
|
3254
|
-
cors:
|
|
3255
|
-
instructions:
|
|
3256
|
-
retrieval:
|
|
3254
|
+
cors: assistant.cors,
|
|
3255
|
+
instructions: assistant.instructions,
|
|
3256
|
+
retrieval: assistant.retrieval
|
|
3257
3257
|
}));
|
|
3258
3258
|
};
|
|
3259
3259
|
var writeNotFoundPage = async (write, srcDir, pages, contentPages) => {
|
|
@@ -3328,7 +3328,7 @@ var generateRuntime = async (project) => {
|
|
|
3328
3328
|
const depsLinkWarning = await ensureDepsLink(out);
|
|
3329
3329
|
const contentRoutes = markdownRoutePaths(project);
|
|
3330
3330
|
const homeLinkHeader = buildHomeLinkHeader(config, contentRoutes) ?? undefined;
|
|
3331
|
-
const
|
|
3331
|
+
const assistantEnabled = config.ai.assistant?.enabled ?? false;
|
|
3332
3332
|
const exportPdf = config.export.pdf;
|
|
3333
3333
|
const exportEpub = config.export.epub;
|
|
3334
3334
|
const rawMarkdown = await buildRawMarkdown(project);
|
|
@@ -3366,7 +3366,7 @@ var generateRuntime = async (project) => {
|
|
|
3366
3366
|
...slotPlan.frameworks
|
|
3367
3367
|
]);
|
|
3368
3368
|
const dependencyWarnings = await dependencyPreflight(project, frameworks);
|
|
3369
|
-
const needsReact = detectedReact ||
|
|
3369
|
+
const needsReact = detectedReact || assistantEnabled || frameworks.has("react");
|
|
3370
3370
|
const needsVue = frameworks.has("vue");
|
|
3371
3371
|
const needsSvelte = frameworks.has("svelte");
|
|
3372
3372
|
const reactCompilerPath = resolveReactCompiler(config, needsReact);
|
|
@@ -3428,7 +3428,7 @@ var generateRuntime = async (project) => {
|
|
|
3428
3428
|
needsReact
|
|
3429
3429
|
})),
|
|
3430
3430
|
writeNavFragments(write, srcDir, navFragments),
|
|
3431
|
-
write(askPath, askComponentTemplate(
|
|
3431
|
+
write(askPath, askComponentTemplate(assistantEnabled)),
|
|
3432
3432
|
write(join11(srcDir, "generated", "components.ts"), slotPlan.module),
|
|
3433
3433
|
write(join11(srcDir, "generated", "examples.ts"), exampleMapTemplate(exampleDiscovery.examples, config.basePath)),
|
|
3434
3434
|
write(examplesThemePath, examplesEntryTemplate({
|
|
@@ -3560,5 +3560,5 @@ var generateRuntime = async (project) => {
|
|
|
3560
3560
|
|
|
3561
3561
|
export { publishBuildProject, refreshBlumeContent, showBlumeErrorOverlay, ogCacheDir, pruneCardCache, cardCacheTally, buildAskData, buildThemeCss, buildReferenceFiles, tailwindEntryTemplate, examplesEntryTemplate, rebaseSourceDirectives, twoslashCss, EXAMPLE_SCAN_GLOB, exampleScanRoots, discoverExamples, exampleMarkdownLookup, packageDirFrom, detectNeedsReact, detectUsesMath, collectStaged, buildRuntimeData, analyzeComponentsFile, languageIconCssFor, clientFeaturesFor, generateRuntime };
|
|
3562
3562
|
|
|
3563
|
-
//# debugId=
|
|
3564
|
-
//# sourceMappingURL=chunk-
|
|
3563
|
+
//# debugId=35E2A04C63CD05BF64756E2164756E21
|
|
3564
|
+
//# sourceMappingURL=chunk-wgm7m9qk.js.map
|