blume 1.7.1 → 1.7.3

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 (138) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cli/chunk-0qymqwzz.js +164 -0
  3. package/dist/cli/chunk-0qymqwzz.js.map +15 -0
  4. package/dist/cli/{chunk-8gnpdsn1.js → chunk-0xjyb285.js} +2 -2
  5. package/dist/cli/{chunk-12dzsn9b.js → chunk-1jefwnfs.js} +82 -81
  6. package/dist/cli/{chunk-12dzsn9b.js.map → chunk-1jefwnfs.js.map} +3 -3
  7. package/dist/cli/{chunk-27gtm2ym.js → chunk-2mzebbbz.js} +1 -1
  8. package/dist/cli/{chunk-s5e5jt53.js → chunk-2z47ypj8.js} +1 -1
  9. package/dist/cli/{chunk-jtb45atp.js → chunk-3r45185y.js} +10 -12
  10. package/dist/cli/{chunk-jtb45atp.js.map → chunk-3r45185y.js.map} +2 -2
  11. package/dist/cli/{chunk-6mq7qkve.js → chunk-4x36ddpw.js} +18 -24
  12. package/dist/cli/{chunk-6mq7qkve.js.map → chunk-4x36ddpw.js.map} +2 -2
  13. package/dist/cli/{chunk-he2zfgah.js → chunk-5093q3n7.js} +22 -30
  14. package/dist/cli/{chunk-he2zfgah.js.map → chunk-5093q3n7.js.map} +2 -2
  15. package/dist/cli/{chunk-k0v1f8bb.js → chunk-5g0w1e2c.js} +21 -28
  16. package/dist/cli/{chunk-k0v1f8bb.js.map → chunk-5g0w1e2c.js.map} +2 -2
  17. package/dist/cli/{chunk-5gfw0q4j.js → chunk-5qk08vmp.js} +26 -34
  18. package/dist/cli/{chunk-5gfw0q4j.js.map → chunk-5qk08vmp.js.map} +2 -2
  19. package/dist/cli/{chunk-r99hynxh.js → chunk-7s8hm3b6.js} +41 -9
  20. package/dist/cli/{chunk-r99hynxh.js.map → chunk-7s8hm3b6.js.map} +3 -3
  21. package/dist/cli/{chunk-vyqj481z.js → chunk-8cjtbafj.js} +68 -66
  22. package/dist/cli/chunk-8cjtbafj.js.map +13 -0
  23. package/dist/cli/{chunk-aqjvpd03.js → chunk-97r59kpr.js} +27 -33
  24. package/dist/cli/{chunk-aqjvpd03.js.map → chunk-97r59kpr.js.map} +2 -2
  25. package/dist/cli/{chunk-np8dmfb0.js → chunk-ahnw3kxw.js} +26 -33
  26. package/dist/cli/{chunk-np8dmfb0.js.map → chunk-ahnw3kxw.js.map} +2 -2
  27. package/dist/cli/{chunk-j5f2wrj5.js → chunk-b27xqwn9.js} +10 -15
  28. package/dist/cli/{chunk-j5f2wrj5.js.map → chunk-b27xqwn9.js.map} +2 -2
  29. package/dist/cli/{chunk-kmx2mydj.js → chunk-bf6bt1xt.js} +8 -8
  30. package/dist/cli/{chunk-kmx2mydj.js.map → chunk-bf6bt1xt.js.map} +1 -1
  31. package/dist/cli/{chunk-90pdhkpm.js → chunk-bvwwhd84.js} +23 -32
  32. package/dist/cli/{chunk-90pdhkpm.js.map → chunk-bvwwhd84.js.map} +2 -2
  33. package/dist/cli/{chunk-mfm4sjwx.js → chunk-cjtn640a.js} +32 -43
  34. package/dist/cli/{chunk-mfm4sjwx.js.map → chunk-cjtn640a.js.map} +2 -2
  35. package/dist/cli/{chunk-pxj10x8y.js → chunk-ct47dqpx.js} +14 -3
  36. package/dist/cli/{chunk-pxj10x8y.js.map → chunk-ct47dqpx.js.map} +4 -3
  37. package/dist/cli/{chunk-x66c5yjn.js → chunk-dwgcp5sm.js} +2 -2
  38. package/dist/cli/{chunk-4trphnvy.js → chunk-e7f42gdj.js} +10 -13
  39. package/dist/cli/{chunk-4trphnvy.js.map → chunk-e7f42gdj.js.map} +2 -2
  40. package/dist/cli/{chunk-82atea4k.js → chunk-esphfr8p.js} +14 -18
  41. package/dist/cli/{chunk-82atea4k.js.map → chunk-esphfr8p.js.map} +2 -2
  42. package/dist/cli/{chunk-q56730e0.js → chunk-ex56aa81.js} +53 -53
  43. package/dist/cli/chunk-ex56aa81.js.map +13 -0
  44. package/dist/cli/{chunk-ywn7t0pb.js → chunk-garjf5z9.js} +3 -3
  45. package/dist/cli/{chunk-ev67ycx0.js → chunk-jq5n4avg.js} +1 -1
  46. package/dist/cli/{chunk-ka5k7cz9.js → chunk-js7saxwm.js} +35 -39
  47. package/dist/cli/{chunk-ka5k7cz9.js.map → chunk-js7saxwm.js.map} +4 -6
  48. package/dist/cli/{chunk-x1wvw7a8.js → chunk-k79xp7av.js} +168 -208
  49. package/dist/cli/chunk-k79xp7av.js.map +39 -0
  50. package/dist/cli/{chunk-3r94j3tc.js → chunk-nn13znc2.js} +2 -2
  51. package/dist/cli/{chunk-4ae4f395.js → chunk-ps4m1xh4.js} +60 -35
  52. package/dist/cli/chunk-ps4m1xh4.js.map +15 -0
  53. package/dist/cli/{chunk-wd27zjcz.js → chunk-q4rae3bg.js} +1 -1
  54. package/dist/cli/{chunk-pdwg3q9g.js → chunk-rqy0s5wh.js} +21 -30
  55. package/dist/cli/{chunk-pdwg3q9g.js.map → chunk-rqy0s5wh.js.map} +2 -2
  56. package/dist/cli/{chunk-52cwcqvp.js → chunk-rz9jmfhz.js} +15 -24
  57. package/dist/cli/{chunk-52cwcqvp.js.map → chunk-rz9jmfhz.js.map} +2 -2
  58. package/dist/cli/{chunk-8p3xe5jv.js → chunk-vacwm2hv.js} +3 -3
  59. package/dist/cli/{chunk-cbjnx4s8.js → chunk-vh9w1sgp.js} +1 -1
  60. package/dist/cli/{chunk-sbdqrjbb.js → chunk-vrfp10qk.js} +1 -1
  61. package/dist/cli/{chunk-h9ekmtz7.js → chunk-yg63d42r.js} +28 -35
  62. package/dist/cli/{chunk-h9ekmtz7.js.map → chunk-yg63d42r.js.map} +2 -2
  63. package/dist/cli/{chunk-5hs6gb7n.js → chunk-yzhm0j9q.js} +1 -1
  64. package/dist/cli/index.js +397 -34
  65. package/dist/cli/index.js.map +12 -4
  66. package/dist/types/core/config-input.d.ts +59 -0
  67. package/dist/types/core/data.d.ts +2 -0
  68. package/dist/types/core/schema.d.ts +47 -3
  69. package/dist/types/core/types.d.ts +5 -0
  70. package/docs/configuration/ask-ai.mdx +61 -0
  71. package/docs/configuration/index.mdx +3 -1
  72. package/docs/content/navigation.mdx +3 -0
  73. package/docs/content/syntax.mdx +10 -0
  74. package/docs/discoverability/agent-discovery.mdx +82 -1
  75. package/docs/discoverability/index.mdx +1 -1
  76. package/docs/discoverability/llms-txt.mdx +1 -1
  77. package/docs/reference/frontmatter.mdx +2 -0
  78. package/package.json +1 -1
  79. package/src/ai/agent-readability.ts +5 -0
  80. package/src/ai/ai-catalog.ts +241 -0
  81. package/src/ai/cors.ts +87 -0
  82. package/src/ai/link-headers.ts +12 -0
  83. package/src/ai/llms.ts +6 -0
  84. package/src/ai/mcp/discovery.ts +1 -1
  85. package/src/astro/generate.ts +4 -0
  86. package/src/astro/templates.ts +88 -23
  87. package/src/cli/commands/build.ts +3 -1
  88. package/src/components/islands/hooks.ts +50 -1
  89. package/src/components/layout/NavTree.astro +75 -66
  90. package/src/components/layout/RootLayout.astro +28 -2
  91. package/src/components/layout/analytics-client.ts +36 -7
  92. package/src/components/layout/nav-utils.ts +17 -3
  93. package/src/core/adapter.ts +61 -0
  94. package/src/core/config-input.ts +60 -0
  95. package/src/core/data.ts +2 -0
  96. package/src/core/navigation.ts +22 -3
  97. package/src/core/schema.ts +88 -0
  98. package/src/core/types.ts +5 -0
  99. package/src/deploy/artifacts.ts +12 -1
  100. package/src/deploy/headers.ts +6 -0
  101. package/src/deploy/vercel-negotiation.ts +25 -2
  102. package/src/registry/eject.ts +2 -0
  103. package/src/search/build.ts +25 -3
  104. package/src/theme/entry.ts +23 -0
  105. package/dist/cli/chunk-2aj8ddew.js +0 -72
  106. package/dist/cli/chunk-2aj8ddew.js.map +0 -10
  107. package/dist/cli/chunk-4ae4f395.js.map +0 -15
  108. package/dist/cli/chunk-4xyggvgf.js +0 -21
  109. package/dist/cli/chunk-4xyggvgf.js.map +0 -10
  110. package/dist/cli/chunk-6kzzpsx8.js +0 -26
  111. package/dist/cli/chunk-6kzzpsx8.js.map +0 -10
  112. package/dist/cli/chunk-bcy492zc.js +0 -16
  113. package/dist/cli/chunk-bcy492zc.js.map +0 -10
  114. package/dist/cli/chunk-btfr9yvw.js +0 -41
  115. package/dist/cli/chunk-btfr9yvw.js.map +0 -10
  116. package/dist/cli/chunk-ey89bjj1.js +0 -209
  117. package/dist/cli/chunk-ey89bjj1.js.map +0 -11
  118. package/dist/cli/chunk-q56730e0.js.map +0 -13
  119. package/dist/cli/chunk-qvvpnwaz.js +0 -69
  120. package/dist/cli/chunk-qvvpnwaz.js.map +0 -11
  121. package/dist/cli/chunk-vt8fgygt.js +0 -23
  122. package/dist/cli/chunk-vt8fgygt.js.map +0 -10
  123. package/dist/cli/chunk-vxv4x1n8.js +0 -17
  124. package/dist/cli/chunk-vxv4x1n8.js.map +0 -10
  125. package/dist/cli/chunk-vyqj481z.js.map +0 -13
  126. package/dist/cli/chunk-x1wvw7a8.js.map +0 -40
  127. /package/dist/cli/{chunk-8gnpdsn1.js.map → chunk-0xjyb285.js.map} +0 -0
  128. /package/dist/cli/{chunk-27gtm2ym.js.map → chunk-2mzebbbz.js.map} +0 -0
  129. /package/dist/cli/{chunk-s5e5jt53.js.map → chunk-2z47ypj8.js.map} +0 -0
  130. /package/dist/cli/{chunk-x66c5yjn.js.map → chunk-dwgcp5sm.js.map} +0 -0
  131. /package/dist/cli/{chunk-ywn7t0pb.js.map → chunk-garjf5z9.js.map} +0 -0
  132. /package/dist/cli/{chunk-ev67ycx0.js.map → chunk-jq5n4avg.js.map} +0 -0
  133. /package/dist/cli/{chunk-3r94j3tc.js.map → chunk-nn13znc2.js.map} +0 -0
  134. /package/dist/cli/{chunk-wd27zjcz.js.map → chunk-q4rae3bg.js.map} +0 -0
  135. /package/dist/cli/{chunk-8p3xe5jv.js.map → chunk-vacwm2hv.js.map} +0 -0
  136. /package/dist/cli/{chunk-cbjnx4s8.js.map → chunk-vh9w1sgp.js.map} +0 -0
  137. /package/dist/cli/{chunk-sbdqrjbb.js.map → chunk-vrfp10qk.js.map} +0 -0
  138. /package/dist/cli/{chunk-5hs6gb7n.js.map → chunk-yzhm0j9q.js.map} +0 -0
@@ -9,7 +9,7 @@
9
9
  "import { readFile } from \"node:fs/promises\";\n\nimport { load } from \"js-yaml\";\nimport { z } from \"zod\";\n\nimport { YAML_SCHEMA } from \"../core/yaml.ts\";\n\n/** Question ids are kebab-case slugs so they read well in reports and CI logs. */\nconst ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/u;\n\nconst questionSchema = z.strictObject({\n expected: z\n .array(z.string().min(1))\n .min(1, \"expected must list at least one fact\"),\n id: z\n .string()\n .regex(ID_PATTERN, \"id must be a kebab-case slug (a-z, 0-9, dashes)\"),\n question: z.string().min(1),\n routes: z\n .union([z.string(), z.array(z.string())])\n .default([])\n .transform((value) => (Array.isArray(value) ? value : [value])),\n severity: z.enum([\"error\", \"warning\"]).default(\"error\"),\n skip: z.boolean().default(false),\n});\n\n/** One author-written eval: a question plus the facts a passing answer states. */\nexport type EvalQuestion = z.infer<typeof questionSchema>;\n\nconst fullSchema = z.strictObject({\n questions: z.array(questionSchema).min(1),\n version: z.literal(1).default(1),\n});\n\n/**\n * The evals file schema. A bare top-level list of questions is accepted as\n * shorthand — `loadEvalsFile` wraps it before validating, rather than a\n * `z.union`, so schema errors name the offending field instead of collapsing\n * into an opaque \"invalid union\" issue.\n */\nexport const evalsFileSchema = fullSchema.superRefine((value, context) => {\n const seen = new Set<string>();\n for (const question of value.questions) {\n if (seen.has(question.id)) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate question id \"${question.id}\"`,\n path: [\"questions\"],\n });\n }\n seen.add(question.id);\n }\n});\n\nexport type EvalsFile = z.infer<typeof evalsFileSchema>;\n\n/** A problem loading or validating the evals file, with the path it names. */\nexport class EvalsFileError extends Error {\n readonly path: string;\n\n constructor(path: string, message: string) {\n super(message);\n this.name = \"EvalsFileError\";\n this.path = path;\n }\n}\n\nconst describeIssues = (error: z.ZodError): string =>\n error.issues\n .map((issue) => {\n const at = issue.path.length > 0 ? ` at ${issue.path.join(\".\")}` : \"\";\n return `${issue.message}${at}`;\n })\n .join(\"; \");\n\n/**\n * Read and validate an evals file. Returns the parsed questions plus the raw\n * text, kept so findings can anchor to the line a question is defined on.\n */\nexport const loadEvalsFile = async (\n path: string\n): Promise<{ evals: EvalsFile; raw: string }> => {\n let raw: string;\n try {\n raw = await readFile(path, \"utf-8\");\n } catch {\n throw new EvalsFileError(\n path,\n `No evals file found at ${path}. Run \\`blume eval init\\` to draft one.`\n );\n }\n\n let parsed: unknown;\n try {\n parsed = load(raw, { schema: YAML_SCHEMA });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n throw new EvalsFileError(path, `Invalid YAML in ${path}: ${detail}`);\n }\n\n // The bare-list shorthand: a top-level sequence of questions.\n const candidate = Array.isArray(parsed) ? { questions: parsed } : parsed;\n const result = evalsFileSchema.safeParse(candidate);\n if (!result.success) {\n throw new EvalsFileError(\n path,\n `Invalid evals file at ${path}: ${describeIssues(result.error)}`\n );\n }\n return { evals: result.data, raw };\n};\n\n/**\n * The 1-based line where a question's `id:` entry appears in the raw evals\n * file, so a finding with no route hint can still point somewhere editable.\n */\nexport const locateQuestion = (raw: string, id: string): number | undefined => {\n const pattern = new RegExp(`^\\\\s*-?\\\\s*id:\\\\s*[\"']?${id}[\"']?\\\\s*$`, \"u\");\n const lines = raw.split(\"\\n\");\n for (const [index, line] of lines.entries()) {\n if (pattern.test(line)) {\n return index + 1;\n }\n }\n return undefined;\n};\n",
10
10
  "import type { BlumeProject } from \"../core/project-graph.ts\";\nimport type { Diagnostic } from \"../core/types.ts\";\nimport { locateQuestion } from \"./schema.ts\";\nimport type { EvalQuestion } from \"./schema.ts\";\n\nconst DOCS_URL = \"https://useblume.dev/docs/reference/eval\";\n\n/** Where a finding should anchor when no route hint matches a page. */\nexport interface EvalsAnchor {\n path: string;\n raw: string;\n}\n\n/** The manifest route a hint names, if any. */\nconst hintedRoute = (question: EvalQuestion, project: BlumeProject) => {\n for (const hint of question.routes) {\n const route = project.manifest.routes.find(\n (candidate) => candidate.path === hint\n );\n if (route) {\n return route;\n }\n }\n};\n\n/**\n * Warnings for route hints that name no manifest route — docs move, and a\n * finding that silently anchors to the evals file instead of the page it\n * used to name is a debugging session; a warning is a one-line fix.\n */\nexport const routeFindings = (\n question: EvalQuestion,\n project: BlumeProject,\n anchor: EvalsAnchor\n): Diagnostic[] => {\n const known = new Set(project.manifest.routes.map((route) => route.path));\n return question.routes\n .filter((hint) => !known.has(hint))\n .map((hint) => ({\n code: \"BLUME_EVAL_ROUTE_UNKNOWN\",\n docsUrl: DOCS_URL,\n file: anchor.path,\n line: locateQuestion(anchor.raw, question.id),\n message: `Question \"${question.id}\" hints at route \"${hint}\", which matches no page.`,\n severity: \"warning\" as const,\n suggestion:\n \"Update the question's `routes` to the page's current route, or remove the hint.\",\n }));\n};\n\n/** What the finding needs to know about how the question went. */\nexport interface QuestionOutcome {\n /** Why the run errored, when it did. */\n detail?: string;\n /** The expected facts the judge found absent or contradicted. */\n missing: string[];\n status: \"error\" | \"fail\";\n}\n\n/**\n * The diagnostic for a failed or errored question, anchored to the page that\n * should have answered it (via the first matching route hint) or, failing\n * that, to the question's line in the evals file.\n */\nexport const questionFinding = (\n question: EvalQuestion,\n outcome: QuestionOutcome,\n project: BlumeProject,\n anchor: EvalsAnchor\n): Diagnostic => {\n const route = hintedRoute(question, project);\n const site = route\n ? { file: route.sourcePath, url: route.path }\n : { file: anchor.path, line: locateQuestion(anchor.raw, question.id) };\n\n if (outcome.status === \"error\") {\n return {\n code: \"BLUME_EVAL_QUESTION_ERROR\",\n docsUrl: DOCS_URL,\n message: `Eval run failed for \"${question.question}\"${\n outcome.detail ? ` — ${outcome.detail}` : \"\"\n }.`,\n severity: question.severity,\n suggestion:\n \"Rerun `blume eval`; if it persists, check the agent CLI installation and the failure detail.\",\n ...site,\n };\n }\n\n const missing =\n outcome.missing.length > 0\n ? ` — missing: ${outcome.missing.join(\"; \")}`\n : \"\";\n return {\n code: \"BLUME_EVAL_QUESTION_FAILED\",\n docsUrl: DOCS_URL,\n message: `Docs could not answer: \"${question.question}\"${missing}`,\n severity: question.severity,\n suggestion:\n \"State the missing facts on this page, then rerun `blume eval`.\",\n ...site,\n };\n};\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "D2F08D9122CA47D464756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "83C1CBF787A3FD3264756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -1,21 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- parsePort
4
- } from "./chunk-x66c5yjn.js";
5
- import {
6
- normalizeHost
7
- } from "./chunk-bcy492zc.js";
8
- import {
9
- loadConfig,
10
- resolveProjectContext
11
- } from "./chunk-r99hynxh.js";
12
- import"./chunk-27gtm2ym.js";
3
+ resolveProjectContext,
4
+ loadConfig
5
+ } from "./chunk-7s8hm3b6.js";
13
6
  import {
7
+ commandMeta,
8
+ normalizeHost,
14
9
  logger
15
- } from "./chunk-ey89bjj1.js";
10
+ } from "./index.js";
16
11
  import {
17
- commandMeta
18
- } from "./chunk-2aj8ddew.js";
12
+ parsePort
13
+ } from "./chunk-dwgcp5sm.js";
19
14
 
20
15
  // src/cli/commands/preview.ts
21
16
  import { existsSync } from "node:fs";
@@ -50,5 +45,5 @@ export {
50
45
  previewCommand
51
46
  };
52
47
 
53
- //# debugId=A0AB802DBFFA2DAA64756E2164756E21
54
- //# sourceMappingURL=chunk-j5f2wrj5.js.map
48
+ //# debugId=F86008553E8CAFA164756E2164756E21
49
+ //# sourceMappingURL=chunk-b27xqwn9.js.map
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import { existsSync } from \"node:fs\";\n\nimport { preview } from \"astro\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { loadConfig } from \"../../core/config.ts\";\nimport { resolveProjectContext } from \"../../core/project.ts\";\nimport { parsePort } from \"../args.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { normalizeHost } from \"../host-args.ts\";\nimport { logger } from \"../log.ts\";\n\nexport const previewCommand = defineCommand({\n args: {\n host: { description: \"Network host to bind.\", type: \"string\" },\n port: { description: \"Port to listen on.\", type: \"string\" },\n },\n meta: commandMeta.preview,\n async run({ args }) {\n const root = process.cwd();\n const { config } = await loadConfig(root);\n const context = resolveProjectContext(root, config);\n\n if (!existsSync(join(context.outDir, \"astro.config.mjs\"))) {\n logger.error(\"No build found. Run `blume build` first.\");\n process.exit(1);\n }\n\n await preview({\n logLevel: \"info\",\n root: context.outDir,\n server: {\n // `normalizeHost` maps a bare `--host` (citty parses it as \"\") to\n // `true` so Vite binds all interfaces instead of the hostname \"\".\n host: normalizeHost(args.host),\n port: parsePort(args.port),\n },\n });\n },\n});\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AASO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM,EAAE,aAAa,yBAAyB,MAAM,SAAS;AAAA,IAC7D,MAAM,EAAE,aAAa,sBAAsB,MAAM,SAAS;AAAA,EAC5D;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IACzB,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA,IACxC,MAAM,UAAU,sBAAsB,MAAM,MAAM;AAAA,IAElD,IAAI,CAAC,WAAW,KAAK,QAAQ,QAAQ,kBAAkB,CAAC,GAAG;AAAA,MACzD,OAAO,MAAM,0CAA0C;AAAA,MACvD,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,QAAQ;AAAA,MACZ,UAAU;AAAA,MACV,MAAM,QAAQ;AAAA,MACd,QAAQ;AAAA,QAGN,MAAM,cAAc,KAAK,IAAI;AAAA,QAC7B,MAAM,UAAU,KAAK,IAAI;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA;AAEL,CAAC;",
8
- "debugId": "A0AB802DBFFA2DAA64756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AASO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM,EAAE,aAAa,yBAAyB,MAAM,SAAS;AAAA,IAC7D,MAAM,EAAE,aAAa,sBAAsB,MAAM,SAAS;AAAA,EAC5D;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IACzB,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA,IACxC,MAAM,UAAU,sBAAsB,MAAM,MAAM;AAAA,IAElD,IAAI,CAAC,WAAW,KAAK,QAAQ,QAAQ,kBAAkB,CAAC,GAAG;AAAA,MACzD,OAAO,MAAM,0CAA0C;AAAA,MACvD,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,QAAQ;AAAA,MACZ,UAAU;AAAA,MACV,MAAM,QAAQ;AAAA,MACd,QAAQ;AAAA,QAGN,MAAM,cAAc,KAAK,IAAI;AAAA,QAC7B,MAAM,UAAU,KAAK,IAAI;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA;AAEL,CAAC;",
8
+ "debugId": "F86008553E8CAFA164756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ nextFenceState,
3
4
  INLINE_CODE,
4
5
  MD_IMAGE,
5
- expandIncludes,
6
+ targetOffsetIn,
6
7
  hasIncludeStatements,
7
- hashText,
8
- nextFenceState,
9
- targetOffsetIn
10
- } from "./chunk-12dzsn9b.js";
8
+ expandIncludes,
9
+ hashText
10
+ } from "./chunk-1jefwnfs.js";
11
11
  import {
12
12
  normalizeBasePath
13
- } from "./chunk-27gtm2ym.js";
13
+ } from "./chunk-2mzebbbz.js";
14
14
 
15
15
  // src/core/sources/read.ts
16
16
  import { readFile } from "node:fs/promises";
@@ -181,5 +181,5 @@ var collectContentAssets = async (project) => {
181
181
 
182
182
  export { readExpandedEntryText, isRelativeImageTarget, resolveRelativeImage, rewriteRelativeImages, collectContentAssets };
183
183
 
184
- //# debugId=2D2EF7E4F8223F9E64756E2164756E21
185
- //# sourceMappingURL=chunk-kmx2mydj.js.map
184
+ //# debugId=A36E1E08EE90A10064756E2164756E21
185
+ //# sourceMappingURL=chunk-bf6bt1xt.js.map
@@ -6,6 +6,6 @@
6
6
  "import { readdirSync, statSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\n\nimport {\n basename,\n dirname,\n extname,\n normalize,\n relative,\n resolve,\n} from \"pathe\";\n\nimport { normalizeBasePath } from \"./base-path.ts\";\nimport { nextFenceState } from \"./code-fences.ts\";\nimport type { FenceState } from \"./code-fences.ts\";\nimport { hashText } from \"./sources/cache.ts\";\nimport { INLINE_CODE, MD_IMAGE, targetOffsetIn } from \"./sources/normalize.ts\";\nimport { readExpandedEntryText } from \"./sources/read.ts\";\nimport type { ContentSource } from \"./sources/types.ts\";\nimport type { PageRecord } from \"./types.ts\";\n\n/**\n * Colocated content images — `![alt](./diagram.png)` next to the page that\n * references it. The HTML render optimizes these through `astro:assets` into\n * hashed `_astro/` files, but that mapping doesn't exist yet when the raw\n * agent-facing Markdown (`/<route>.md`, llms-full.txt, MCP) is snapshotted at\n * generate time — so a verbatim relative path would 404 for every agent\n * fetching the page by URL. Instead, the originals are served at\n * `/blume-assets/content/<project-relative path>` by a generated endpoint (see\n * `contentAssetsEndpointTemplate`), and these helpers rewrite the relative\n * references in agent-facing output to that URL.\n */\n\n/** The endpoint route prefix colocated content images are served under. */\nexport const CONTENT_ASSETS_PREFIX = \"/blume-assets/content\";\n\n// The formats Astro's image pipeline accepts, plus the web-safe pass-throughs;\n// anything else referenced relatively (a `.pdf`, a source file) is left alone.\nconst IMAGE_EXTENSIONS = new Set([\n \".apng\",\n \".avif\",\n \".bmp\",\n \".gif\",\n \".ico\",\n \".jpeg\",\n \".jpg\",\n \".png\",\n \".svg\",\n \".tiff\",\n \".webp\",\n]);\n\n/** Whether a link target is a relative filesystem path (not URL/absolute/hash). */\nconst isRelativeTarget = (target: string): boolean =>\n !(target.startsWith(\"/\") || target.startsWith(\"#\")) && !URL.canParse(target);\n\n/**\n * The endpoint param a colocated image is served under: its project-relative\n * path (readable, collision-free — it mirrors the source tree). A file outside\n * the project root can't be addressed that way (`..` segments don't survive a\n * URL), so it falls back to a content-addressed name.\n */\nexport const contentAssetParam = (\n projectRoot: string,\n absPath: string\n): string => {\n const rel = relative(projectRoot, absPath);\n if (rel.startsWith(\"..\")) {\n return `_/${hashText(absPath)}${extname(absPath)}`;\n }\n return rel;\n};\n\n/** Percent-decode an image target; malformed escapes stay verbatim. */\nconst decodeTarget = (target: string): string => {\n try {\n return decodeURI(target);\n } catch {\n return target;\n }\n};\n\n/**\n * Whether a target is *shaped* like a colocated image reference: a relative\n * filesystem path with an image extension. Exported so link validation can\n * tell \"not a colocated candidate\" apart from \"a candidate that resolves\n * nowhere\" — the former falls through to the public-dir probe, the latter is\n * a broken reference beside the page source.\n */\nexport const isRelativeImageTarget = (target: string): boolean =>\n isRelativeTarget(target) &&\n IMAGE_EXTENSIONS.has(extname(decodeTarget(target)).toLowerCase());\n\n/**\n * Whether `abs` is a file whose trailing `segments` names match the on-disk\n * entries exactly. A bare `existsSync` accepts `./Diagram.PNG` for\n * `diagram.png` (or a directory named like an image) on a case-insensitive\n * filesystem — the reference then validates and serves locally but breaks on\n * the case-sensitive Linux build.\n */\nconst existsAsWritten = (abs: string, segments: number): boolean => {\n let current = abs;\n for (let i = 0; i < segments; i += 1) {\n const parent = dirname(current);\n let entries: string[];\n try {\n entries = readdirSync(parent);\n } catch {\n return false;\n }\n if (!entries.includes(basename(current))) {\n return false;\n }\n current = parent;\n }\n const stat = statSync(abs, { throwIfNoEntry: false });\n return stat !== undefined && stat.isFile();\n};\n\n/**\n * Resolve one image target against its page's directory. Returns the absolute\n * file path when the target is relative, is an image, and exists on disk —\n * anything else (remote URLs, `public/` absolutes, broken refs, code-block\n * examples that happen to look like paths) is null and left untouched. Shared\n * with link validation, so what counts as a colocated image is decided once.\n */\nexport const resolveRelativeImage = (\n sourceDir: string,\n target: string\n): string | null => {\n if (!isRelativeImageTarget(target)) {\n return null;\n }\n const decoded = decodeTarget(target);\n // Only the segments the author wrote are checked against on-disk names;\n // `sourceDir`'s own casing is the filesystem's business, not the target's.\n const segments = normalize(decoded)\n .split(\"/\")\n .filter((part) => part !== \"\" && part !== \"..\").length;\n const abs = resolve(sourceDir, decoded);\n return existsAsWritten(abs, segments) ? abs : null;\n};\n\n/** Encode an endpoint param for use in a Markdown URL, keeping `/` separators. */\nconst encodedParam = (param: string): string =>\n param.split(\"/\").map(encodeURIComponent).join(\"/\");\n\n/**\n * Rewrite one line's relative image targets. Matches run on a copy with inline\n * code blanked out (a `` `![x](./y.png)` `` span is syntax being *shown*, not\n * an image), while replacements splice into the real line by index — the mask\n * preserves length, so the indices line up.\n */\nconst rewriteLine = (\n line: string,\n toUrl: (target: string) => string | null\n): string => {\n const masked = line.replaceAll(INLINE_CODE, (span) =>\n \" \".repeat(span.length)\n );\n let out = \"\";\n let cursor = 0;\n for (const match of masked.matchAll(MD_IMAGE)) {\n const target = match.groups?.target ?? \"\";\n const url = toUrl(target);\n if (url === null) {\n continue;\n }\n const offset =\n (match.index ?? 0) +\n targetOffsetIn(match[0], target, match.groups?.title);\n out += line.slice(cursor, offset) + url;\n cursor = offset + target.length;\n }\n return out + line.slice(cursor);\n};\n\n/**\n * Rewrite a page's relative image references to their served\n * `/blume-assets/content/…` URLs (under `deployment.base` when set). Fenced\n * code blocks and inline code are skipped; only references whose file actually\n * exists next to the source are touched. `register` observes each rewritten\n * asset so a caller can accumulate the files the endpoint must serve.\n */\nexport const rewriteRelativeImages = (options: {\n source: string;\n sourcePath: string;\n projectRoot: string;\n deployBase?: string;\n register?: (param: string, absPath: string) => void;\n}): string => {\n const { source, sourcePath, projectRoot, deployBase, register } = options;\n const sourceDir = dirname(sourcePath);\n const prefix = `${normalizeBasePath(deployBase)}${CONTENT_ASSETS_PREFIX}`;\n const toUrl = (target: string): string | null => {\n const abs = resolveRelativeImage(sourceDir, target);\n if (abs === null) {\n return null;\n }\n const param = contentAssetParam(projectRoot, abs);\n register?.(param, abs);\n return `${prefix}/${encodedParam(param)}`;\n };\n\n let fence: FenceState = null;\n const lines = source.split(\"\\n\").map((line) => {\n const next = nextFenceState(line, fence);\n const inFence = fence !== null || next !== null;\n fence = next;\n return inFence ? line : rewriteLine(line, toUrl);\n });\n return lines.join(\"\\n\");\n};\n\n/**\n * Every colocated image the project's pages reference, keyed by endpoint param.\n * Serialized to `generated/content-assets.json`, which the\n * `/blume-assets/[...asset]` endpoint reads to serve the original files. Runs\n * the same rewrite the agent-Markdown builders apply — over the same\n * include-expanded text, so a partial's colocated images (rebased into the\n * including page by the expander) are served too — keeping the served set and\n * the rewritten URLs from drifting apart.\n */\nexport const collectContentAssets = async (project: {\n context: { root: string };\n manifest: { routes: { id: string; sourcePath?: string }[] };\n graph: { pages: PageRecord[] };\n sources?: ContentSource[];\n}): Promise<Record<string, string>> => {\n const pageById = new Map(project.graph.pages.map((page) => [page.id, page]));\n const files: Record<string, string> = {};\n await Promise.all(\n project.manifest.routes.map(async (route) => {\n if (!route.sourcePath) {\n return;\n }\n const page = pageById.get(route.id);\n let source: string;\n try {\n source = page\n ? await readExpandedEntryText(project, page)\n : await readFile(route.sourcePath, \"utf-8\");\n } catch {\n return;\n }\n rewriteRelativeImages({\n projectRoot: project.context.root,\n register: (param, abs) => {\n files[param] = abs;\n },\n source,\n sourcePath: route.sourcePath,\n });\n })\n );\n return files;\n};\n"
7
7
  ],
8
8
  "mappings": "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",
9
- "debugId": "2D2EF7E4F8223F9E64756E2164756E21",
9
+ "debugId": "A36E1E08EE90A10064756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,39 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- prepareProject
4
- } from "./chunk-82atea4k.js";
5
- import"./chunk-ywn7t0pb.js";
6
- import"./chunk-btfr9yvw.js";
7
- import {
8
- readDevLock
9
- } from "./chunk-8p3xe5jv.js";
10
- import"./chunk-x1wvw7a8.js";
11
- import"./chunk-ka5k7cz9.js";
12
- import"./chunk-pxj10x8y.js";
13
- import"./chunk-sbdqrjbb.js";
14
- import"./chunk-kmx2mydj.js";
15
- import"./chunk-ev67ycx0.js";
16
- import"./chunk-vt8fgygt.js";
17
- import"./chunk-3r94j3tc.js";
18
- import"./chunk-4ae4f395.js";
19
- import"./chunk-qvvpnwaz.js";
20
- import"./chunk-vxv4x1n8.js";
21
- import"./chunk-wd27zjcz.js";
22
- import"./chunk-12dzsn9b.js";
23
- import {
24
- loadConfig,
3
+ resolveRuntimeDir,
25
4
  resolveProjectContext,
26
- resolveRuntimeDir
27
- } from "./chunk-r99hynxh.js";
28
- import"./chunk-27gtm2ym.js";
29
- import"./chunk-4xyggvgf.js";
30
- import"./chunk-6kzzpsx8.js";
5
+ loadConfig
6
+ } from "./chunk-7s8hm3b6.js";
31
7
  import {
8
+ commandMeta,
32
9
  logger
33
- } from "./chunk-ey89bjj1.js";
10
+ } from "./index.js";
34
11
  import {
35
- commandMeta
36
- } from "./chunk-2aj8ddew.js";
12
+ readDevLock
13
+ } from "./chunk-vacwm2hv.js";
14
+ import"./chunk-ct47dqpx.js";
15
+ import"./chunk-0qymqwzz.js";
16
+ import"./chunk-1jefwnfs.js";
17
+ import"./chunk-k79xp7av.js";
18
+ import"./chunk-js7saxwm.js";
19
+ import"./chunk-bf6bt1xt.js";
20
+ import"./chunk-jq5n4avg.js";
21
+ import"./chunk-ps4m1xh4.js";
22
+ import"./chunk-nn13znc2.js";
23
+ import"./chunk-vrfp10qk.js";
24
+ import {
25
+ prepareProject
26
+ } from "./chunk-esphfr8p.js";
27
+ import"./chunk-garjf5z9.js";
37
28
 
38
29
  // src/cli/commands/sync.ts
39
30
  import { rm } from "node:fs/promises";
@@ -77,5 +68,5 @@ export {
77
68
  syncCommand
78
69
  };
79
70
 
80
- //# debugId=CD2123C1322DDD3C64756E2164756E21
81
- //# sourceMappingURL=chunk-90pdhkpm.js.map
71
+ //# debugId=7B94E31DD936C06C64756E2164756E21
72
+ //# sourceMappingURL=chunk-bvwwhd84.js.map
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import { rm } from \"node:fs/promises\";\n\nimport { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { loadConfig } from \"../../core/config.ts\";\nimport {\n resolveProjectContext,\n resolveRuntimeDir,\n} from \"../../core/project.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { readDevLock } from \"../dev-lock.ts\";\nimport { logger } from \"../log.ts\";\nimport { prepareProject } from \"../prepare.ts\";\n\nexport const syncCommand = defineCommand({\n args: {\n force: {\n description: \"Clear the source cache before refetching.\",\n type: \"boolean\",\n },\n preview: {\n description: \"Include drafts and unpublished CMS content.\",\n type: \"boolean\",\n },\n strict: { description: \"Fail on diagnostics.\", type: \"boolean\" },\n },\n meta: commandMeta.sync,\n async run({ args }) {\n const root = process.cwd();\n\n // `--force` drops the snapshots so a stale or corrupt cache can't be served;\n // scoped to `.blume/cache`, so a running dev server's runtime is untouched.\n if (args.force) {\n const { config } = await loadConfig(root);\n const context = resolveProjectContext(root, config);\n await rm(join(context.outDir, \"cache\"), { force: true, recursive: true });\n logger.info(\"Cleared source cache.\");\n }\n\n // Dev mode keeps drafts and skips the static-build gate; `refresh` forces\n // remote sources to re-fetch rather than serve their cached snapshot. A\n // running dev server hot-reloads from the regenerated runtime — so when one\n // is live, regenerate with the same site fallback (its URL) it used, else\n // its astro.config loses `site` (dropping OG and canonicals) and Astro\n // restarts cold.\n const lock = readDevLock(resolveRuntimeDir(root));\n const devServerUrl = lock?.port\n ? `http://localhost:${lock.port}`\n : undefined;\n await prepareProject({\n devServerUrl,\n mode: \"dev\",\n preview: args.preview,\n refresh: true,\n root,\n strict: args.strict,\n });\n\n logger.success(\"Synced content sources.\");\n },\n});\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAYO,IAAM,cAAc,cAAc;AAAA,EACvC,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,QAAQ,EAAE,aAAa,wBAAwB,MAAM,UAAU;AAAA,EACjE;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAIzB,IAAI,KAAK,OAAO;AAAA,MACd,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA,MACxC,MAAM,UAAU,sBAAsB,MAAM,MAAM;AAAA,MAClD,MAAM,GAAG,KAAK,QAAQ,QAAQ,OAAO,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,MACxE,OAAO,KAAK,uBAAuB;AAAA,IACrC;AAAA,IAQA,MAAM,OAAO,YAAY,kBAAkB,IAAI,CAAC;AAAA,IAChD,MAAM,eAAe,MAAM,OACvB,oBAAoB,KAAK,SACzB;AAAA,IACJ,MAAM,eAAe;AAAA,MACnB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,IAED,OAAO,QAAQ,yBAAyB;AAAA;AAE5C,CAAC;",
8
- "debugId": "CD2123C1322DDD3C64756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAYO,IAAM,cAAc,cAAc;AAAA,EACvC,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,QAAQ,EAAE,aAAa,wBAAwB,MAAM,UAAU;AAAA,EACjE;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAIzB,IAAI,KAAK,OAAO;AAAA,MACd,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA,MACxC,MAAM,UAAU,sBAAsB,MAAM,MAAM;AAAA,MAClD,MAAM,GAAG,KAAK,QAAQ,QAAQ,OAAO,GAAG,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,MACxE,OAAO,KAAK,uBAAuB;AAAA,IACrC;AAAA,IAQA,MAAM,OAAO,YAAY,kBAAkB,IAAI,CAAC;AAAA,IAChD,MAAM,eAAe,MAAM,OACvB,oBAAoB,KAAK,SACzB;AAAA,IACJ,MAAM,eAAe;AAAA,MACnB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,IAED,OAAO,QAAQ,yBAAyB;AAAA;AAE5C,CAAC;",
8
+ "debugId": "7B94E31DD936C06C64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,53 +1,42 @@
1
1
  #!/usr/bin/env node
2
+ import"./chunk-ct47dqpx.js";
3
+ import"./chunk-0qymqwzz.js";
2
4
  import {
3
- parsePort
4
- } from "./chunk-x66c5yjn.js";
5
- import {
6
- normalizeHost
7
- } from "./chunk-bcy492zc.js";
8
- import {
9
- prepareProject
10
- } from "./chunk-82atea4k.js";
11
- import"./chunk-ywn7t0pb.js";
12
- import"./chunk-btfr9yvw.js";
13
- import {
14
- DevLockHeldError,
15
- acquireDevLock,
16
- describeDevLock,
17
- updateDevLockPort
18
- } from "./chunk-8p3xe5jv.js";
5
+ scanProject
6
+ } from "./chunk-1jefwnfs.js";
19
7
  import {
20
- generateRuntime,
21
8
  refreshBlumeContent,
22
- showBlumeErrorOverlay
23
- } from "./chunk-x1wvw7a8.js";
24
- import"./chunk-ka5k7cz9.js";
25
- import"./chunk-pxj10x8y.js";
26
- import"./chunk-sbdqrjbb.js";
27
- import"./chunk-kmx2mydj.js";
28
- import"./chunk-ev67ycx0.js";
29
- import"./chunk-vt8fgygt.js";
30
- import"./chunk-3r94j3tc.js";
31
- import"./chunk-4ae4f395.js";
32
- import"./chunk-qvvpnwaz.js";
33
- import"./chunk-vxv4x1n8.js";
34
- import"./chunk-wd27zjcz.js";
9
+ showBlumeErrorOverlay,
10
+ generateRuntime
11
+ } from "./chunk-k79xp7av.js";
12
+ import"./chunk-js7saxwm.js";
35
13
  import {
36
- scanProject
37
- } from "./chunk-12dzsn9b.js";
14
+ commandMeta,
15
+ normalizeHost,
16
+ logger,
17
+ reportDiagnostics
18
+ } from "./index.js";
38
19
  import {
39
20
  resolveRuntimeDir
40
- } from "./chunk-r99hynxh.js";
41
- import"./chunk-27gtm2ym.js";
42
- import"./chunk-4xyggvgf.js";
43
- import"./chunk-6kzzpsx8.js";
21
+ } from "./chunk-7s8hm3b6.js";
22
+ import"./chunk-bf6bt1xt.js";
23
+ import"./chunk-jq5n4avg.js";
24
+ import"./chunk-ps4m1xh4.js";
25
+ import"./chunk-nn13znc2.js";
26
+ import"./chunk-vrfp10qk.js";
44
27
  import {
45
- logger,
46
- reportDiagnostics
47
- } from "./chunk-ey89bjj1.js";
28
+ DevLockHeldError,
29
+ acquireDevLock,
30
+ updateDevLockPort,
31
+ describeDevLock
32
+ } from "./chunk-vacwm2hv.js";
33
+ import {
34
+ parsePort
35
+ } from "./chunk-dwgcp5sm.js";
48
36
  import {
49
- commandMeta
50
- } from "./chunk-2aj8ddew.js";
37
+ prepareProject
38
+ } from "./chunk-esphfr8p.js";
39
+ import"./chunk-garjf5z9.js";
51
40
 
52
41
  // src/cli/commands/dev.ts
53
42
  import { dev } from "astro";
@@ -172,5 +161,5 @@ export {
172
161
  devCommand
173
162
  };
174
163
 
175
- //# debugId=EE16C622AD2E2BB164756E2164756E21
176
- //# sourceMappingURL=chunk-mfm4sjwx.js.map
164
+ //# debugId=C55DCF2DA51757BB64756E2164756E21
165
+ //# sourceMappingURL=chunk-cjtn640a.js.map
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import { dev } from \"astro\";\nimport { watch } from \"chokidar\";\nimport { defineCommand } from \"citty\";\nimport { debounce } from \"perfect-debounce\";\n\nimport { generateRuntime } from \"../../astro/generate.ts\";\nimport {\n refreshBlumeContent,\n showBlumeErrorOverlay,\n} from \"../../astro/integration.ts\";\nimport { scanProject } from \"../../core/project-graph.ts\";\nimport { resolveRuntimeDir } from \"../../core/project.ts\";\nimport { parsePort } from \"../args.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport {\n acquireDevLock,\n describeDevLock,\n DevLockHeldError,\n updateDevLockPort,\n} from \"../dev-lock.ts\";\nimport { normalizeHost } from \"../host-args.ts\";\nimport { logger, reportDiagnostics } from \"../log.ts\";\nimport { prepareProject } from \"../prepare.ts\";\n\n/**\n * A fingerprint of the route set: the sorted `path entryId` pairs. It changes\n * when a page is added, removed, or renamed (a folder rename shifts many at\n * once) but stays equal across pure body edits — so the dev loop can tell a\n * \"structural\" change (needs a content re-sync) from a hot-reloadable one.\n */\nconst routeSignature = (\n routes: readonly { entryId: string; path: string }[]\n): string =>\n routes\n .map((route) => `${route.path} ${route.entryId}`)\n .toSorted()\n .join(\"\\n\");\n\nexport const devCommand = defineCommand({\n args: {\n \"content-dir\": {\n description: \"Content folder to scan, overriding config (content.root).\",\n type: \"string\",\n },\n debug: {\n description: \"Verbose Astro/Vite logging for troubleshooting.\",\n type: \"boolean\",\n },\n host: { description: \"Network host to bind.\", type: \"string\" },\n open: { description: \"Open the browser on start.\", type: \"boolean\" },\n port: { description: \"Port to listen on.\", type: \"string\" },\n preview: {\n description: \"Include drafts and unpublished CMS content.\",\n type: \"boolean\",\n },\n strict: { description: \"Fail on diagnostics.\", type: \"boolean\" },\n },\n meta: commandMeta.dev,\n async run({ args }) {\n const root = process.cwd();\n const preview = args.preview ?? false;\n const overrides = args[\"content-dir\"]\n ? { contentRoot: args[\"content-dir\"] }\n : undefined;\n // Astro's dev server defaults to 4321 when no port is passed. Feeding the\n // resolved URL in as the `deployment.site` fallback lets site-gated features\n // (OG images, canonicals, sitemap) work locally without configuring a site.\n const explicitPort = parsePort(args.port);\n const port = explicitPort ?? 4321;\n let devServerUrl = `http://localhost:${port}`;\n\n // Claim the shared `.blume` dir BEFORE preparing: `prepareProject`\n // regenerates the runtime, so even a refused second dev server would\n // otherwise clobber the running one's generated tree (with this\n // invocation's port baked in) on its way out. The claim is atomic, so two\n // simultaneous starts can't both win. Dev never relocates the runtime dir,\n // so the lock always lives at `<root>/.blume`.\n const outDir = resolveRuntimeDir(root);\n let releaseLock: () => void;\n try {\n releaseLock = acquireDevLock(outDir, port);\n } catch (error) {\n if (error instanceof DevLockHeldError) {\n logger.error(\n `A \\`blume dev\\` server is already running${describeDevLock(error.lock)} in this project. Reuse that server instead of starting a second one — two dev servers would corrupt the shared .blume dir. If it crashed, delete .blume/dev.lock.`\n );\n process.exit(1);\n }\n throw error;\n }\n process.on(\"exit\", releaseLock);\n\n const project = await prepareProject({\n devServerUrl,\n mode: \"dev\",\n overrides,\n preview,\n root,\n strict: args.strict,\n });\n\n // A factory so the regenerate loop can recreate the server when a\n // structural (route-set) change can't be re-synced in place (see below).\n // `open` is honored on first boot only — a restart must not reopen the\n // browser.\n const createServer = (listenPort: number | undefined, open: boolean) =>\n dev({\n logLevel: args.debug ? \"debug\" : \"info\",\n root: project.context.outDir,\n server: { host: normalizeHost(args.host), open, port: listenPort },\n });\n\n let server = await createServer(explicitPort, args.open ?? false);\n\n // Vite bumps to the next free port when the default is taken, so record\n // the port the server actually bound — the lock's URL is what a refused\n // second invocation tells its caller to reuse. The site fallback baked\n // into the runtime also carries the port, so it must follow suit (below,\n // once the regeneration closure exists).\n const boundPort = server.address.port;\n if (boundPort !== port) {\n updateDevLockPort(outDir, boundPort);\n devServerUrl = `http://localhost:${boundPort}`;\n }\n\n // Mirror any initial diagnostics into the browser overlay now the server\n // (and its HMR channel) is up.\n showBlumeErrorOverlay(project.diagnostics);\n\n let lastSignature = routeSignature(project.manifest.routes);\n\n // Watch user inputs and regenerate the runtime data on change. A body edit\n // hot-reloads via Vite (fast path). A route-set change also needs Astro's\n // content store re-synced: its glob watcher misses directory renames, so a\n // renamed page would 404 (`getEntry` reads a stale store). Astro hands the\n // integration `refreshContent` for exactly that — a full loader run\n // against the live server, after which Astro's own store watcher clears\n // the route cache and reloads the browser. Only a server that registered\n // no refresh (none since Astro 5) falls back to a cold restart: stop,\n // then bring up a fresh container whose cold sync re-globs everything.\n // perfect-debounce both debounces the watch burst (80ms) and\n // single-flights the scan: a\n // trigger during a run never starts a second run, only marks one trailing\n // rerun after the current settles. Both halves are load-bearing — a plain\n // debounce once let bursts stack overlapping scans until the heap was\n // exhausted (observed as an OOM after minutes of looping). The contract is\n // pinned by test/dev-debounce.test.ts. The task must not reject (the\n // library re-invokes it from an unhandled .finally), so the body catches\n // its own errors and always resolves.\n const regenerate = debounce(async () => {\n try {\n const next = await scanProject(root, {\n devServerUrl,\n mode: \"dev\",\n overrides,\n preview,\n });\n const nextSignature = routeSignature(next.manifest.routes);\n const structural = nextSignature !== lastSignature;\n // Generate first: the new runtime data (and any staged remote content)\n // is on disk and published before the store re-syncs against it.\n await generateRuntime(next);\n if (structural && !(await refreshBlumeContent())) {\n await server.stop();\n server = await createServer(boundPort, false);\n }\n // Commit the signature only after the (re)generation succeeded. If the\n // re-sync or restart above throws mid-sequence, the signature stays\n // stale so the next watch event retries the structural path.\n lastSignature = nextSignature;\n // Surface any content/config errors in the terminal AND the browser\n // overlay. The terminal report is not redundant: the overlay only\n // shows once the browser has connected, and it clears on the next HMR\n // update.\n reportDiagnostics(next.diagnostics, root);\n showBlumeErrorOverlay(next.diagnostics);\n } catch (error) {\n // SAFETY: regeneration failures come from the generator and Astro's\n // server API, which raise Error instances; only the message is shown.\n logger.error(`Regeneration failed: ${(error as Error).message}`);\n }\n }, 80);\n\n // The runtime prepared above baked the *requested* port into the site\n // fallback; if Vite bumped it, regenerate so OG images, canonicals, and\n // other site-gated URLs point at the port actually serving.\n if (boundPort !== port) {\n void regenerate();\n }\n\n // Content is watched per source (filesystem uses fs.watch; remote sources\n // are frozen for the session). The remaining project inputs — user pages,\n // config, theme, and component overrides — are watched directly.\n const dirTargets = [project.context.pagesRoot].filter(\n (target) => target !== null\n );\n const fileTargets = [\n project.context.configFile,\n project.context.themeFile,\n project.context.componentsFile,\n ].filter((target) => target !== null);\n\n // chokidar handles what raw fs.watch made us hand-roll: recursive\n // directory watching on every platform, and single files surviving a\n // rename-replace save (vim and most \"atomic save\" editors), which orphans\n // an inode-tracking fs.watch watcher after the first write.\n const projectWatcher = watch([...dirTargets, ...fileTargets], {\n ignoreInitial: true,\n }).on(\"all\", regenerate);\n const disposers = [\n ...project.sources.map((source) => source.watch?.(regenerate)),\n () => {\n void projectWatcher.close();\n },\n ].filter((dispose) => dispose !== undefined);\n\n const shutdown = async () => {\n for (const dispose of disposers) {\n dispose();\n }\n releaseLock();\n await server.stop();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n },\n});\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "EE16C622AD2E2BB164756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "C55DCF2DA51757BB64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,4 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ trimEnd
4
+ } from "./chunk-2mzebbbz.js";
5
+
6
+ // src/core/site-url.ts
7
+ import { joinURL } from "ufo";
8
+ var siteRoot = (site) => trimEnd(site, "/");
9
+ var absoluteUrl = (site, path) => {
10
+ const root = siteRoot(site);
11
+ return path === "/" ? `${root}/` : joinURL(root, path);
12
+ };
2
13
 
3
14
  // src/ai/mcp/tools.ts
4
15
  var READ_ONLY = { openWorldHint: false, readOnlyHint: true };
@@ -29,7 +40,7 @@ var MCP_TOOLS = [
29
40
  }
30
41
  ];
31
42
 
32
- export { MCP_TOOLS };
43
+ export { siteRoot, absoluteUrl, MCP_TOOLS };
33
44
 
34
- //# debugId=56B52393DC55784564756E2164756E21
35
- //# sourceMappingURL=chunk-pxj10x8y.js.map
45
+ //# debugId=3DB06DF8543389A264756E2164756E21
46
+ //# sourceMappingURL=chunk-ct47dqpx.js.map
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/ai/mcp/tools.ts"],
3
+ "sources": ["../src/core/site-url.ts", "../src/ai/mcp/tools.ts"],
4
4
  "sourcesContent": [
5
+ "import { joinURL } from \"ufo\";\n\nimport { trimEnd } from \"./trim.ts\";\n\n/**\n * Absolute-URL building for the configured `deployment.site`, shared by every\n * emitter that prints site URLs (sitemap, RSS, robots, llms.txt, the MCP and\n * agent-discovery documents). One implementation replaces eight per-file\n * copies that had drifted across three different trailing-slash treatments.\n *\n * Deliberately not `new URL(path, site)`: a root-absolute path would drop the\n * base path of a subpath deployment (`acme.com/docs`). ufo's `joinURL` joins\n * without that footgun; the site is first trimmed with the ReDoS-safe\n * `trimEnd` loop so even a malformed `site` with piled-up trailing slashes\n * joins cleanly.\n */\n\n/** The configured site with any trailing slashes dropped. */\nexport const siteRoot = (site: string): string => trimEnd(site, \"/\");\n\n/** `site` + root-absolute `path` (already carrying any deployment base). */\nexport const absoluteUrl = (site: string, path: string): string => {\n const root = siteRoot(site);\n // joinURL folds a lone \"/\" away entirely; the homepage keeps its slash\n // (`https://example.com/`), matching what every emitter always printed.\n return path === \"/\" ? `${root}/` : joinURL(root, path);\n};\n",
5
6
  "/**\n * Static metadata for the MCP tools Blume exposes. Shared by the server (which\n * pairs each entry with a Zod input schema and handler) and the `.well-known`\n * discovery documents, so tool names and descriptions never drift between the\n * live server and its advertised capabilities.\n */\n\n/** A read-only, non-mutating tool hint set (every Blume tool is read-only). */\nconst READ_ONLY = { openWorldHint: false, readOnlyHint: true } as const;\n\nexport interface McpToolMeta {\n annotations: { openWorldHint: boolean; readOnlyHint: boolean };\n description: string;\n name: string;\n title: string;\n}\n\nexport const MCP_TOOLS: McpToolMeta[] = [\n {\n annotations: READ_ONLY,\n description:\n 'Full-text search across the documentation. Returns matching pages with their title, route, content type, and a short excerpt; pass `contentTypes` to search only pages of certain types (e.g. `rfc`, `changelog`), `filters` to require facet values the site declares per type (e.g. `{\"status\": \"enforced\"}`), and `locale` to search one language. On a versioned site results default to the current docs — pass `version` to search an archived version (e.g. `\"v1.0\"`) or `\"all\"` for every version. Use this first to discover relevant pages, then `get_page` to read one in full.',\n name: \"search_docs\",\n title: \"Search documentation\",\n },\n {\n annotations: READ_ONLY,\n description:\n \"Fetch a single documentation page as agent-optimized Markdown (frontmatter included, components downleveled to plain Markdown). Pass a route from `search_docs` or `list_pages`, e.g. `/guides/install`.\",\n name: \"get_page\",\n title: \"Get page Markdown\",\n },\n {\n annotations: READ_ONLY,\n description:\n 'List every documentation page with its route, title, description, content type, and any declared facet values; pass `contentTypes`, `filters`, and/or `locale` to narrow the list. On a versioned site the list defaults to the current docs — pass `version` for an archived version or `\"all\"`. Useful for enumerating the docs, discovering the types and facets in use, or finding a page when search is too narrow.',\n name: \"list_pages\",\n title: \"List pages\",\n },\n {\n annotations: READ_ONLY,\n description:\n \"Return the documentation navigation tree (header tabs and the sidebar hierarchy), reflecting how the docs are organized for readers. Pass `locale` for a language's tree and, on a versioned site, `version` for an archived snapshot's tree.\",\n name: \"get_navigation\",\n title: \"Get navigation\",\n },\n];\n"
6
7
  ],
7
- "mappings": ";;;AAQA,IAAM,YAAY,EAAE,eAAe,OAAO,cAAc,KAAK;AAStD,IAAM,YAA2B;AAAA,EACtC;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF;",
8
- "debugId": "56B52393DC55784564756E2164756E21",
8
+ "mappings": ";;;;;;AAAA;AAkBO,IAAM,WAAW,CAAC,SAAyB,QAAQ,MAAM,GAAG;AAG5D,IAAM,cAAc,CAAC,MAAc,SAAyB;AAAA,EACjE,MAAM,OAAO,SAAS,IAAI;AAAA,EAG1B,OAAO,SAAS,MAAM,GAAG,UAAU,QAAQ,MAAM,IAAI;AAAA;;;ACjBvD,IAAM,YAAY,EAAE,eAAe,OAAO,cAAc,KAAK;AAStD,IAAM,YAA2B;AAAA,EACtC;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,aACE;AAAA,IACF,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF;",
9
+ "debugId": "3DB06DF8543389A264756E2164756E21",
9
10
  "names": []
10
11
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  logger
4
- } from "./chunk-ey89bjj1.js";
4
+ } from "./index.js";
5
5
 
6
6
  // src/cli/args.ts
7
7
  var MAX_PORT = 65535;
@@ -20,4 +20,4 @@ var parsePort = (value) => {
20
20
  export { parsePort };
21
21
 
22
22
  //# debugId=EAEB4015F7DCE38D64756E2164756E21
23
- //# sourceMappingURL=chunk-x66c5yjn.js.map
23
+ //# sourceMappingURL=chunk-dwgcp5sm.js.map
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- findItem,
4
- packageSrc,
5
- registry
6
- } from "./chunk-3r94j3tc.js";
7
- import"./chunk-6kzzpsx8.js";
8
- import {
3
+ commandMeta,
9
4
  logger
10
- } from "./chunk-ey89bjj1.js";
5
+ } from "./index.js";
11
6
  import {
12
- commandMeta
13
- } from "./chunk-2aj8ddew.js";
7
+ packageSrc,
8
+ registry,
9
+ findItem
10
+ } from "./chunk-nn13znc2.js";
14
11
 
15
12
  // src/cli/commands/add.ts
16
13
  import { existsSync } from "node:fs";
@@ -52,8 +49,8 @@ var addCommand = defineCommand({
52
49
  const root = process.cwd();
53
50
  if (!args.name) {
54
51
  logger.info("Available registry items:");
55
- for (const item2 of registry) {
56
- process.stdout.write(` ${item2.name} — ${item2.description}
52
+ for (const item of registry) {
53
+ process.stdout.write(` ${item.name} — ${item.description}
57
54
  `);
58
55
  }
59
56
  return;
@@ -98,5 +95,5 @@ export {
98
95
  addCommand
99
96
  };
100
97
 
101
- //# debugId=2570752CA48BB3F964756E2164756E21
102
- //# sourceMappingURL=chunk-4trphnvy.js.map
98
+ //# debugId=B640E77C94BA0A0364756E2164756E21
99
+ //# sourceMappingURL=chunk-e7f42gdj.js.map
@@ -5,7 +5,7 @@
5
5
  "import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\n\nimport { defineCommand } from \"citty\";\nimport { dirname, join } from \"pathe\";\n\nimport { findItem, packageSrc, registry } from \"../../registry/registry.ts\";\nimport { rewriteImports } from \"../../registry/rewrite-imports.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { logger } from \"../log.ts\";\n\nexport const addCommand = defineCommand({\n args: {\n force: { description: \"Overwrite existing files.\", type: \"boolean\" },\n name: {\n description: \"Registry item to install.\",\n required: false,\n type: \"positional\",\n },\n },\n meta: commandMeta.add,\n async run({ args }) {\n const root = process.cwd();\n\n if (!args.name) {\n logger.info(\"Available registry items:\");\n for (const item of registry) {\n process.stdout.write(` ${item.name} — ${item.description}\\n`);\n }\n return;\n }\n\n const item = findItem(args.name);\n if (!item) {\n logger.error(`Unknown registry item: ${args.name}`);\n logger.info(`Run \\`blume add\\` to list available items.`);\n process.exit(1);\n }\n\n const plan = item.files.map((file) => ({\n file,\n skip: existsSync(join(root, file.target)) && !args.force,\n target: join(root, file.target),\n }));\n\n await Promise.all(\n plan\n .filter((entry) => !entry.skip)\n .map(async (entry) => {\n const source = join(packageSrc, entry.file.source);\n const raw = await readFile(source, \"utf-8\");\n // Built-in components carry relative imports into the package; rewrite\n // them to `blume/*` so the installed copy resolves them.\n const content = entry.file.rewrite\n ? rewriteImports(raw, source, packageSrc)\n : raw;\n await mkdir(dirname(entry.target), { recursive: true });\n await writeFile(entry.target, content, \"utf-8\");\n })\n );\n\n for (const entry of plan) {\n if (entry.skip) {\n logger.warn(\n `Skipped existing ${entry.file.target} (use --force to overwrite)`\n );\n } else {\n logger.success(`Added ${entry.file.target}`);\n }\n }\n\n if (item.postInstall.length > 0) {\n process.stdout.write(`\\nNext steps:\\n`);\n for (const line of item.postInstall) {\n process.stdout.write(` ${line}\\n`);\n }\n }\n },\n});\n",
6
6
  "import { dirname, relative, resolve } from \"pathe\";\n\n// A relative specifier (starting with `.`) in an `import … from \"…\"` or\n// `export … from \"…\"` statement. Anchored to the start of a line (`m` flag) and\n// bounded by `[^;]` so it only matches a real statement — not a `from \"./…\"`\n// that happens to appear inside a string or JSX text — while still allowing a\n// multiline import body between the keyword and `from`.\nconst FROM_IMPORT =\n /(?<prefix>^[ \\t]*(?:import|export)\\b[^;]*?\\bfrom[ \\t]*)(?<quote>[\"'])(?<spec>\\.[^\"']*)\\k<quote>/gmu;\n\n// A side-effect `import \"./…\"` at the start of a line.\nconst SIDE_EFFECT_IMPORT =\n /(?<prefix>^[ \\t]*import[ \\t]+)(?<quote>[\"'])(?<spec>\\.[^\"']*)\\k<quote>/gmu;\n\n/**\n * Rewrite a built-in component's relative imports to `blume/*` package\n * specifiers, so a copy installed by `blume add` resolves the rest of the\n * framework from the package instead of broken relative paths.\n *\n * `sourceFile` is the original file's absolute path and `srcRoot` the package\n * `src` directory; a relative import is resolved against the source, mapped to\n * its path under `src`, and re-emitted as `blume/<that path>`. Two specifiers\n * are left untouched: a self-reference (a component importing itself, e.g. the\n * recursive nav tree) stays relative so the copy recurses into the copy, and\n * anything resolving outside `src` is left as-is.\n */\nexport const rewriteImports = (\n content: string,\n sourceFile: string,\n srcRoot: string\n): string => {\n const rewrite = (\n match: string,\n prefix: string,\n quote: string,\n spec: string\n ): string => {\n const resolved = resolve(dirname(sourceFile), spec);\n if (resolved === sourceFile) {\n return match;\n }\n const rel = relative(srcRoot, resolved);\n if (rel.startsWith(\"..\")) {\n return match;\n }\n return `${prefix}${quote}blume/${rel}${quote}`;\n };\n return content\n .replaceAll(FROM_IMPORT, rewrite)\n .replaceAll(SIDE_EFFECT_IMPORT, rewrite);\n};\n"
7
7
  ],
8
- "mappings": ";;;;;;;;;;;;;;;AAAA;AACA;AAEA;AACA,oBAAS;;;ACJT;AAOA,IAAM,cACJ;AAGF,IAAM,qBACJ;AAcK,IAAM,iBAAiB,CAC5B,SACA,YACA,YACW;AAAA,EACX,MAAM,UAAU,CACd,OACA,QACA,OACA,SACW;AAAA,IACX,MAAM,WAAW,QAAQ,QAAQ,UAAU,GAAG,IAAI;AAAA,IAClD,IAAI,aAAa,YAAY;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,MAAM,SAAS,SAAS,QAAQ;AAAA,IACtC,IAAI,IAAI,WAAW,IAAI,GAAG;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,GAAG,SAAS,cAAc,MAAM;AAAA;AAAA,EAEzC,OAAO,QACJ,WAAW,aAAa,OAAO,EAC/B,WAAW,oBAAoB,OAAO;AAAA;;;ADtCpC,IAAM,aAAa,cAAc;AAAA,EACtC,MAAM;AAAA,IACJ,OAAO,EAAE,aAAa,6BAA6B,MAAM,UAAU;AAAA,IACnE,MAAM;AAAA,MACJ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEzB,IAAI,CAAC,KAAK,MAAM;AAAA,MACd,OAAO,KAAK,2BAA2B;AAAA,MACvC,WAAW,SAAQ,UAAU;AAAA,QAC3B,QAAQ,OAAO,MAAM,KAAK,MAAK,UAAU,MAAK;AAAA,CAAe;AAAA,MAC/D;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,SAAS,KAAK,IAAI;AAAA,IAC/B,IAAI,CAAC,MAAM;AAAA,MACT,OAAO,MAAM,0BAA0B,KAAK,MAAM;AAAA,MAClD,OAAO,KAAK,4CAA4C;AAAA,MACxD,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC,UAAU;AAAA,MACrC;AAAA,MACA,MAAM,WAAW,KAAK,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK;AAAA,MACnD,QAAQ,KAAK,MAAM,KAAK,MAAM;AAAA,IAChC,EAAE;AAAA,IAEF,MAAM,QAAQ,IACZ,KACG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,EAC7B,IAAI,OAAO,UAAU;AAAA,MACpB,MAAM,SAAS,KAAK,YAAY,MAAM,KAAK,MAAM;AAAA,MACjD,MAAM,MAAM,MAAM,SAAS,QAAQ,OAAO;AAAA,MAG1C,MAAM,UAAU,MAAM,KAAK,UACvB,eAAe,KAAK,QAAQ,UAAU,IACtC;AAAA,MACJ,MAAM,MAAM,SAAQ,MAAM,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MACtD,MAAM,UAAU,MAAM,QAAQ,SAAS,OAAO;AAAA,KAC/C,CACL;AAAA,IAEA,WAAW,SAAS,MAAM;AAAA,MACxB,IAAI,MAAM,MAAM;AAAA,QACd,OAAO,KACL,oBAAoB,MAAM,KAAK,mCACjC;AAAA,MACF,EAAO;AAAA,QACL,OAAO,QAAQ,SAAS,MAAM,KAAK,QAAQ;AAAA;AAAA,IAE/C;AAAA,IAEA,IAAI,KAAK,YAAY,SAAS,GAAG;AAAA,MAC/B,QAAQ,OAAO,MAAM;AAAA;AAAA,CAAiB;AAAA,MACtC,WAAW,QAAQ,KAAK,aAAa;AAAA,QACnC,QAAQ,OAAO,MAAM,KAAK;AAAA,CAAQ;AAAA,MACpC;AAAA,IACF;AAAA;AAEJ,CAAC;",
9
- "debugId": "2570752CA48BB3F964756E2164756E21",
8
+ "mappings": ";;;;;;;;;;;;AAAA;AACA;AAEA;AACA,oBAAS;;;ACJT;AAOA,IAAM,cACJ;AAGF,IAAM,qBACJ;AAcK,IAAM,iBAAiB,CAC5B,SACA,YACA,YACW;AAAA,EACX,MAAM,UAAU,CACd,OACA,QACA,OACA,SACW;AAAA,IACX,MAAM,WAAW,QAAQ,QAAQ,UAAU,GAAG,IAAI;AAAA,IAClD,IAAI,aAAa,YAAY;AAAA,MAC3B,OAAO;AAAA,IACT;AAAA,IACA,MAAM,MAAM,SAAS,SAAS,QAAQ;AAAA,IACtC,IAAI,IAAI,WAAW,IAAI,GAAG;AAAA,MACxB,OAAO;AAAA,IACT;AAAA,IACA,OAAO,GAAG,SAAS,cAAc,MAAM;AAAA;AAAA,EAEzC,OAAO,QACJ,WAAW,aAAa,OAAO,EAC/B,WAAW,oBAAoB,OAAO;AAAA;;;ADtCpC,IAAM,aAAa,cAAc;AAAA,EACtC,MAAM;AAAA,IACJ,OAAO,EAAE,aAAa,6BAA6B,MAAM,UAAU;AAAA,IACnE,MAAM;AAAA,MACJ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEzB,IAAI,CAAC,KAAK,MAAM;AAAA,MACd,OAAO,KAAK,2BAA2B;AAAA,MACvC,WAAW,QAAQ,UAAU;AAAA,QAC3B,QAAQ,OAAO,MAAM,KAAK,KAAK,UAAU,KAAK;AAAA,CAAe;AAAA,MAC/D;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,SAAS,KAAK,IAAI;AAAA,IAC/B,IAAI,CAAC,MAAM;AAAA,MACT,OAAO,MAAM,0BAA0B,KAAK,MAAM;AAAA,MAClD,OAAO,KAAK,4CAA4C;AAAA,MACxD,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC,UAAU;AAAA,MACrC;AAAA,MACA,MAAM,WAAW,KAAK,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK;AAAA,MACnD,QAAQ,KAAK,MAAM,KAAK,MAAM;AAAA,IAChC,EAAE;AAAA,IAEF,MAAM,QAAQ,IACZ,KACG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,EAC7B,IAAI,OAAO,UAAU;AAAA,MACpB,MAAM,SAAS,KAAK,YAAY,MAAM,KAAK,MAAM;AAAA,MACjD,MAAM,MAAM,MAAM,SAAS,QAAQ,OAAO;AAAA,MAG1C,MAAM,UAAU,MAAM,KAAK,UACvB,eAAe,KAAK,QAAQ,UAAU,IACtC;AAAA,MACJ,MAAM,MAAM,SAAQ,MAAM,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MACtD,MAAM,UAAU,MAAM,QAAQ,SAAS,OAAO;AAAA,KAC/C,CACL;AAAA,IAEA,WAAW,SAAS,MAAM;AAAA,MACxB,IAAI,MAAM,MAAM;AAAA,QACd,OAAO,KACL,oBAAoB,MAAM,KAAK,mCACjC;AAAA,MACF,EAAO;AAAA,QACL,OAAO,QAAQ,SAAS,MAAM,KAAK,QAAQ;AAAA;AAAA,IAE/C;AAAA,IAEA,IAAI,KAAK,YAAY,SAAS,GAAG;AAAA,MAC/B,QAAQ,OAAO,MAAM;AAAA;AAAA,CAAiB;AAAA,MACtC,WAAW,QAAQ,KAAK,aAAa;AAAA,QACnC,QAAQ,OAAO,MAAM,KAAK;AAAA,CAAQ;AAAA,MACpC;AAAA,IACF;AAAA;AAEJ,CAAC;",
9
+ "debugId": "B640E77C94BA0A0364756E2164756E21",
10
10
  "names": []
11
11
  }