@agent-native/core 0.51.8 → 0.51.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"plan-local.js","sourceRoot":"","sources":["../../src/cli/plan-local.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DB-free local plan helpers.\n *\n * These commands are intentionally separate from the Plan app actions. They do\n * not call MCP, HTTP, SQLite, or the Plan template runtime; they only read and\n * write local files so privacy-focused users have an auditable no-DB path.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\ntype LocalPlanKind = \"plan\" | \"recap\";\n\ntype LocalPlanFiles = {\n dir: string;\n planMdx: string;\n canvasMdx?: string;\n prototypeMdx?: string;\n stateJson?: string;\n};\n\ntype LocalPlanPreviewInput = {\n dir: string;\n kind?: LocalPlanKind;\n title?: string;\n brief?: string;\n};\n\ntype LocalPlanPreviewResult = {\n ok: true;\n dir: string;\n out: string;\n url: string;\n title: string;\n kind: LocalPlanKind;\n files: string[];\n};\n\nfunction parseArgs(argv: string[]): Record<string, string | boolean> {\n const out: Record<string, string | boolean> = {};\n for (let i = 0; i < argv.length; i += 1) {\n const token = argv[i];\n if (!token.startsWith(\"--\")) continue;\n const key = token.slice(2);\n const next = argv[i + 1];\n if (next === undefined || next.startsWith(\"--\")) out[key] = true;\n else {\n out[key] = next;\n i += 1;\n }\n }\n return out;\n}\n\nfunction stringArg(\n args: Record<string, string | boolean>,\n key: string,\n): string {\n const value = args[key];\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`Missing --${key}`);\n }\n return value;\n}\n\nfunction optionalArg(\n args: Record<string, string | boolean>,\n key: string,\n): string | undefined {\n const value = args[key];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction boolArg(args: Record<string, string | boolean>, key: string): boolean {\n return args[key] === true;\n}\n\nexport function localPlanFolderName(title: string): string {\n const slug = title\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 64)\n .replace(/-+$/g, \"\");\n return slug || \"untitled-plan\";\n}\n\nfunction normalizeKind(value: string | undefined): LocalPlanKind {\n if (!value) return \"plan\";\n if (value === \"plan\" || value === \"recap\") return value;\n throw new Error(`Invalid --kind \"${value}\" (expected plan or recap)`);\n}\n\nfunction defaultPlansDir(): string {\n return path.resolve(process.env.PLAN_LOCAL_DIR || \"plans\");\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n\nfunction stripFrontmatter(source: string): {\n body: string;\n frontmatter: Record<string, string>;\n} {\n if (!source.startsWith(\"---\\n\")) return { body: source, frontmatter: {} };\n const end = source.indexOf(\"\\n---\", 4);\n if (end < 0) return { body: source, frontmatter: {} };\n const frontmatterSource = source.slice(4, end).trim();\n const body = source.slice(end + 4).replace(/^\\r?\\n/, \"\");\n const frontmatter: Record<string, string> = {};\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const match = line.match(/^([A-Za-z0-9_-]+):\\s*(.*)$/);\n if (!match) continue;\n const value = match[2]\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\")\n .trim();\n frontmatter[match[1]] = value;\n }\n return { body, frontmatter };\n}\n\nfunction firstHeading(source: string): string | null {\n for (const line of source.split(/\\r?\\n/)) {\n const match = line.match(/^#{1,3}\\s+(.+)$/);\n if (match) return match[1].trim();\n }\n return null;\n}\n\nfunction splitMdxBlocks(source: string): Array<{\n type: \"markdown\" | \"component\";\n name?: string;\n value: string;\n}> {\n const blocks: Array<{\n type: \"markdown\" | \"component\";\n name?: string;\n value: string;\n }> = [];\n const lines = source.split(/\\r?\\n/);\n let markdown: string[] = [];\n let component: string[] | null = null;\n let componentName = \"\";\n\n function flushMarkdown() {\n const value = markdown.join(\"\\n\").trim();\n if (value) blocks.push({ type: \"markdown\", value });\n markdown = [];\n }\n\n function flushComponent() {\n if (!component) return;\n blocks.push({\n type: \"component\",\n name: componentName || \"MDX component\",\n value: component.join(\"\\n\").trim(),\n });\n component = null;\n componentName = \"\";\n }\n\n for (const line of lines) {\n const start = line.match(/^<([A-Z][A-Za-z0-9_]*)\\b/);\n if (!component && start) {\n flushMarkdown();\n component = [line];\n componentName = start[1];\n if (/\\/>\\s*$/.test(line)) flushComponent();\n continue;\n }\n\n if (component) {\n component.push(line);\n if (new RegExp(`</${componentName}>\\\\s*$`).test(line)) {\n flushComponent();\n }\n continue;\n }\n\n markdown.push(line);\n }\n\n flushComponent();\n flushMarkdown();\n return blocks;\n}\n\nfunction renderMarkdownish(source: string): string {\n const lines = source.split(/\\r?\\n/);\n const html: string[] = [];\n let inCode = false;\n let codeLines: string[] = [];\n let listLines: string[] = [];\n\n function flushList() {\n if (listLines.length === 0) return;\n html.push(\n `<ul>${listLines.map((line) => `<li>${escapeHtml(line)}</li>`).join(\"\")}</ul>`,\n );\n listLines = [];\n }\n\n function flushCode() {\n if (!inCode) return;\n html.push(`<pre><code>${escapeHtml(codeLines.join(\"\\n\"))}</code></pre>`);\n codeLines = [];\n inCode = false;\n }\n\n for (const line of lines) {\n if (line.startsWith(\"```\")) {\n if (inCode) flushCode();\n else {\n flushList();\n inCode = true;\n codeLines = [];\n }\n continue;\n }\n if (inCode) {\n codeLines.push(line);\n continue;\n }\n\n const heading = line.match(/^(#{1,4})\\s+(.+)$/);\n if (heading) {\n flushList();\n const level = Math.min(heading[1].length, 4);\n html.push(`<h${level}>${escapeHtml(heading[2].trim())}</h${level}>`);\n continue;\n }\n\n const bullet = line.match(/^\\s*[-*]\\s+(.+)$/);\n if (bullet) {\n listLines.push(bullet[1]);\n continue;\n }\n\n if (!line.trim()) {\n flushList();\n continue;\n }\n\n flushList();\n html.push(`<p>${escapeHtml(line.trim())}</p>`);\n }\n\n flushCode();\n flushList();\n return html.join(\"\\n\");\n}\n\nexport function readLocalPlanFiles(dir: string): LocalPlanFiles {\n const resolved = path.resolve(dir);\n const planPath = path.join(resolved, \"plan.mdx\");\n if (!fs.existsSync(planPath)) {\n throw new Error(`Missing local plan source: ${planPath}`);\n }\n const readOptional = (file: string) => {\n const abs = path.join(resolved, file);\n return fs.existsSync(abs) ? fs.readFileSync(abs, \"utf-8\") : undefined;\n };\n return {\n dir: resolved,\n planMdx: fs.readFileSync(planPath, \"utf-8\"),\n canvasMdx: readOptional(\"canvas.mdx\"),\n prototypeMdx: readOptional(\"prototype.mdx\"),\n stateJson: readOptional(\".plan-state.json\"),\n };\n}\n\nexport function buildLocalPlanPreviewHtml(\n input: LocalPlanPreviewInput,\n): string {\n const files = readLocalPlanFiles(input.dir);\n const parsed = stripFrontmatter(files.planMdx);\n const title =\n input.title ||\n parsed.frontmatter.title ||\n firstHeading(parsed.body) ||\n path.basename(files.dir);\n const brief = input.brief || parsed.frontmatter.brief || \"\";\n const kind = input.kind || normalizeKind(parsed.frontmatter.kind);\n const blocks = splitMdxBlocks(parsed.body);\n const sourceFiles = [\n [\"plan.mdx\", files.planMdx],\n [\"canvas.mdx\", files.canvasMdx],\n [\"prototype.mdx\", files.prototypeMdx],\n [\".plan-state.json\", files.stateJson],\n ].filter((entry): entry is [string, string] => Boolean(entry[1]));\n\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${escapeHtml(title)}</title>\n <style>\n :root {\n color-scheme: light dark;\n --bg: #f8fafc;\n --paper: #ffffff;\n --ink: #0f172a;\n --muted: #64748b;\n --line: #cbd5e1;\n --accent: #2563eb;\n --soft: #eff6ff;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n }\n @media (prefers-color-scheme: dark) {\n :root {\n --bg: #020617;\n --paper: #0f172a;\n --ink: #e2e8f0;\n --muted: #94a3b8;\n --line: #334155;\n --soft: #172554;\n }\n }\n body { margin: 0; background: var(--bg); color: var(--ink); }\n main { max-width: 1040px; margin: 0 auto; padding: 40px 20px 56px; }\n header { margin-bottom: 28px; }\n h1 { font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1; margin: 0 0 12px; }\n h2 { font-size: 1.35rem; margin: 28px 0 10px; }\n h3 { font-size: 1.05rem; margin: 0 0 8px; }\n p, li { line-height: 1.65; }\n .meta { display: flex; flex-wrap: wrap; gap: 8px; color: var(--muted); font-size: 0.9rem; }\n .pill { border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: var(--paper); }\n .notice { background: var(--soft); border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; margin: 18px 0; }\n .block, details { background: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 18px; margin: 14px 0; }\n .component summary { cursor: pointer; color: var(--accent); font-weight: 650; }\n pre { overflow: auto; border-radius: 8px; border: 1px solid var(--line); padding: 14px; background: rgba(148, 163, 184, 0.12); }\n code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.9rem; }\n .source-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }\n </style>\n</head>\n<body>\n <main>\n <header>\n <div class=\"meta\">\n <span class=\"pill\">${kind === \"recap\" ? \"Visual recap\" : \"Visual plan\"}</span>\n <span class=\"pill\">Local-files mode</span>\n <span class=\"pill\">No DB writes</span>\n </div>\n <h1>${escapeHtml(title)}</h1>\n ${brief ? `<p>${escapeHtml(brief)}</p>` : \"\"}\n <div class=\"notice\">\n This preview was generated entirely from local files. It does not call\n the Plan MCP server, the Plan app action surface, a hosted service, or a\n database. Edit the MDX files and regenerate this preview to update it.\n </div>\n </header>\n <section>\n ${blocks\n .map((block) =>\n block.type === \"component\"\n ? `<details class=\"component block\" open><summary>${escapeHtml(\n block.name || \"MDX component\",\n )}</summary><pre><code>${escapeHtml(block.value)}</code></pre></details>`\n : `<article class=\"block\">${renderMarkdownish(block.value)}</article>`,\n )\n .join(\"\\n\")}\n </section>\n <section>\n <h2>Local Source Files</h2>\n <div class=\"source-tabs\">\n ${sourceFiles\n .map(\n ([name, source]) =>\n `<details><summary>${escapeHtml(name)}</summary><pre><code>${escapeHtml(\n source,\n )}</code></pre></details>`,\n )\n .join(\"\\n\")}\n </div>\n </section>\n </main>\n</body>\n</html>\n`;\n}\n\nexport function writeLocalPlanPreview(input: {\n dir: string;\n out?: string;\n kind?: LocalPlanKind;\n title?: string;\n brief?: string;\n}): LocalPlanPreviewResult {\n const dir = path.resolve(input.dir);\n const parsed = stripFrontmatter(readLocalPlanFiles(dir).planMdx);\n const kind = input.kind || normalizeKind(parsed.frontmatter.kind);\n const title =\n input.title ||\n parsed.frontmatter.title ||\n firstHeading(parsed.body) ||\n path.basename(dir);\n const out = path.resolve(input.out || path.join(dir, \"preview.html\"));\n fs.mkdirSync(path.dirname(out), { recursive: true });\n fs.writeFileSync(out, buildLocalPlanPreviewHtml({ ...input, dir, kind }));\n const files = [\n \"plan.mdx\",\n \"canvas.mdx\",\n \"prototype.mdx\",\n \".plan-state.json\",\n ].filter((file) => fs.existsSync(path.join(dir, file)));\n return {\n ok: true,\n dir,\n out,\n url: pathToFileURL(out).href,\n title,\n kind,\n files,\n };\n}\n\nfunction writeLocalPlanSkeleton(input: {\n dir?: string;\n title: string;\n brief?: string;\n kind: LocalPlanKind;\n force?: boolean;\n}): { ok: true; dir: string; files: string[] } {\n const dir = path.resolve(\n input.dir || path.join(defaultPlansDir(), localPlanFolderName(input.title)),\n );\n const planPath = path.join(dir, \"plan.mdx\");\n if (fs.existsSync(planPath) && !input.force) {\n throw new Error(\n `${planPath} already exists. Pass --force to replace the skeleton.`,\n );\n }\n fs.mkdirSync(dir, { recursive: true });\n const title = input.title;\n const brief =\n input.brief ||\n (input.kind === \"recap\"\n ? \"Local visual recap generated without Plan app database writes.\"\n : \"Local visual plan generated without Plan app database writes.\");\n const mdx = [\n \"---\",\n `title: \"${title.replace(/\"/g, '\\\\\"')}\"`,\n `brief: \"${brief.replace(/\"/g, '\\\\\"')}\"`,\n `kind: \"${input.kind}\"`,\n \"localOnly: true\",\n \"---\",\n \"\",\n `# ${title}`,\n \"\",\n brief,\n \"\",\n \"## Review Surface\",\n \"\",\n \"Author the structured plan or recap here. You can add Agent-Native Plan MDX\",\n \"blocks such as `<WireframeBlock />`, `<Diagram />`, `<TabsBlock />`,\",\n \"`<FileTree />`, or `<Diff />`; the local preview will show the source\",\n \"without publishing it to the Plan app.\",\n \"\",\n ].join(\"\\n\");\n fs.writeFileSync(planPath, mdx, \"utf-8\");\n fs.writeFileSync(\n path.join(dir, \".plan-state.json\"),\n JSON.stringify(\n {\n localOnly: true,\n kind: input.kind,\n createdAt: new Date().toISOString(),\n },\n null,\n 2,\n ) + \"\\n\",\n \"utf-8\",\n );\n return { ok: true, dir, files: [\"plan.mdx\", \".plan-state.json\"] };\n}\n\nfunction runInit(args: Record<string, string | boolean>): void {\n const title = optionalArg(args, \"title\") || \"Untitled local visual plan\";\n const result = writeLocalPlanSkeleton({\n dir: optionalArg(args, \"dir\"),\n title,\n brief: optionalArg(args, \"brief\"),\n kind: normalizeKind(optionalArg(args, \"kind\")),\n force: boolArg(args, \"force\"),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nfunction runCheck(args: Record<string, string | boolean>): void {\n const dir = stringArg(args, \"dir\");\n const files = readLocalPlanFiles(dir);\n const parsed = stripFrontmatter(files.planMdx);\n const result = {\n ok: true,\n noDb: true,\n dir: files.dir,\n title: parsed.frontmatter.title || firstHeading(parsed.body),\n kind: normalizeKind(parsed.frontmatter.kind),\n files: {\n \"plan.mdx\": Buffer.byteLength(files.planMdx),\n ...(files.canvasMdx\n ? { \"canvas.mdx\": Buffer.byteLength(files.canvasMdx) }\n : {}),\n ...(files.prototypeMdx\n ? { \"prototype.mdx\": Buffer.byteLength(files.prototypeMdx) }\n : {}),\n ...(files.stateJson\n ? { \".plan-state.json\": Buffer.byteLength(files.stateJson) }\n : {}),\n },\n };\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nfunction runPreview(args: Record<string, string | boolean>): void {\n const result = writeLocalPlanPreview({\n dir: stringArg(args, \"dir\"),\n out: optionalArg(args, \"out\"),\n title: optionalArg(args, \"title\"),\n brief: optionalArg(args, \"brief\"),\n kind: optionalArg(args, \"kind\")\n ? normalizeKind(optionalArg(args, \"kind\"))\n : undefined,\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nconst HELP = `agent-native plan — local Agent-Native Plan helpers\n\nUsage:\n agent-native plan local init --title <title> [--brief <text>] [--kind plan|recap] [--dir <folder>] [--force]\n agent-native plan local check --dir <folder>\n agent-native plan local preview --dir <folder> [--out preview.html] [--kind plan|recap]\n\nThe local subcommands are the privacy-focused no-DB path. They only read and\nwrite local files: plan.mdx, optional canvas.mdx, optional prototype.mdx, and\noptional .plan-state.json. They do not call the Plan MCP server, the Plan app\nactions, hosted services, or SQLite.\n\nCommon flow:\n agent-native plan local init --title \"Checkout review\" --kind plan\n agent-native plan local preview --dir plans/checkout-review\n`;\n\nexport async function runPlan(argv: string[]): Promise<void> {\n const [area, sub, ...rest] = argv;\n if (area !== \"local\") {\n // Bare `agent-native plan` / `plan help` / `plan --help` → show help on\n // stdout and exit 0 (informational, not an error).\n if (\n area === undefined ||\n area === \"help\" ||\n area === \"--help\" ||\n area === \"-h\"\n ) {\n process.stdout.write(HELP);\n return;\n }\n // A non-empty, unrecognised area (e.g. `agent-native plan lokal`) is an\n // error: print to stderr so the CI log captures it, and exit 1 so callers\n // can detect the failure. This mirrors the existing behaviour for unknown\n // subcommands inside `plan local`.\n process.stderr.write(`Unknown plan area: ${area}\\n${HELP}`);\n process.exit(1);\n }\n const args = parseArgs(rest);\n switch (sub) {\n case \"init\":\n runInit(args);\n return;\n case \"check\":\n runCheck(args);\n return;\n case \"preview\":\n runPreview(args);\n return;\n case \"help\":\n case \"--help\":\n case \"-h\":\n case undefined:\n process.stdout.write(HELP);\n return;\n default:\n process.stderr.write(`Unknown plan local subcommand: ${sub}\\n${HELP}`);\n process.exit(1);\n }\n}\n"]}
1
+ {"version":3,"file":"plan-local.js","sourceRoot":"","sources":["../../src/cli/plan-local.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plan helper commands.\n *\n * The `plan local` commands are intentionally separate from the Plan app\n * actions. They do not call MCP, HTTP, SQLite, or the Plan template runtime;\n * they only read and write local files so privacy-focused users have an\n * auditable no-DB path. The top-level `plan blocks` command is a schema-only,\n * no-auth helper for fetching the public block catalog before authoring local\n * MDX; it never sends plan content.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport {\n DEFAULT_PLAN_APP_URL,\n defaultPlanBlocksOut,\n fetchPlanBlockCatalog,\n normalizePlanBlockFormat,\n} from \"./plan-blocks.js\";\n\ntype LocalPlanKind = \"plan\" | \"recap\";\n\ntype LocalPlanFiles = {\n dir: string;\n planMdx: string;\n canvasMdx?: string;\n prototypeMdx?: string;\n stateJson?: string;\n};\n\ntype LocalPlanPreviewInput = {\n dir: string;\n kind?: LocalPlanKind;\n title?: string;\n brief?: string;\n};\n\ntype LocalPlanPreviewResult = {\n ok: true;\n dir: string;\n out: string;\n url: string;\n title: string;\n kind: LocalPlanKind;\n files: string[];\n};\n\nfunction parseArgs(argv: string[]): Record<string, string | boolean> {\n const out: Record<string, string | boolean> = {};\n for (let i = 0; i < argv.length; i += 1) {\n const token = argv[i];\n if (!token.startsWith(\"--\")) continue;\n const key = token.slice(2);\n const next = argv[i + 1];\n if (next === undefined || next.startsWith(\"--\")) out[key] = true;\n else {\n out[key] = next;\n i += 1;\n }\n }\n return out;\n}\n\nfunction stringArg(\n args: Record<string, string | boolean>,\n key: string,\n): string {\n const value = args[key];\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`Missing --${key}`);\n }\n return value;\n}\n\nfunction optionalArg(\n args: Record<string, string | boolean>,\n key: string,\n): string | undefined {\n const value = args[key];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction boolArg(args: Record<string, string | boolean>, key: string): boolean {\n return args[key] === true;\n}\n\nexport function localPlanFolderName(title: string): string {\n const slug = title\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 64)\n .replace(/-+$/g, \"\");\n return slug || \"untitled-plan\";\n}\n\nfunction normalizeKind(value: string | undefined): LocalPlanKind {\n if (!value) return \"plan\";\n if (value === \"plan\" || value === \"recap\") return value;\n throw new Error(`Invalid --kind \"${value}\" (expected plan or recap)`);\n}\n\nfunction defaultPlansDir(): string {\n return path.resolve(process.env.PLAN_LOCAL_DIR || \"plans\");\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n\nfunction stripFrontmatter(source: string): {\n body: string;\n frontmatter: Record<string, string>;\n} {\n if (!source.startsWith(\"---\\n\")) return { body: source, frontmatter: {} };\n const end = source.indexOf(\"\\n---\", 4);\n if (end < 0) return { body: source, frontmatter: {} };\n const frontmatterSource = source.slice(4, end).trim();\n const body = source.slice(end + 4).replace(/^\\r?\\n/, \"\");\n const frontmatter: Record<string, string> = {};\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const match = line.match(/^([A-Za-z0-9_-]+):\\s*(.*)$/);\n if (!match) continue;\n const value = match[2]\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\")\n .trim();\n frontmatter[match[1]] = value;\n }\n return { body, frontmatter };\n}\n\nfunction firstHeading(source: string): string | null {\n for (const line of source.split(/\\r?\\n/)) {\n const match = line.match(/^#{1,3}\\s+(.+)$/);\n if (match) return match[1].trim();\n }\n return null;\n}\n\nfunction splitMdxBlocks(source: string): Array<{\n type: \"markdown\" | \"component\";\n name?: string;\n value: string;\n}> {\n const blocks: Array<{\n type: \"markdown\" | \"component\";\n name?: string;\n value: string;\n }> = [];\n const lines = source.split(/\\r?\\n/);\n let markdown: string[] = [];\n let component: string[] | null = null;\n let componentName = \"\";\n\n function flushMarkdown() {\n const value = markdown.join(\"\\n\").trim();\n if (value) blocks.push({ type: \"markdown\", value });\n markdown = [];\n }\n\n function flushComponent() {\n if (!component) return;\n blocks.push({\n type: \"component\",\n name: componentName || \"MDX component\",\n value: component.join(\"\\n\").trim(),\n });\n component = null;\n componentName = \"\";\n }\n\n for (const line of lines) {\n const start = line.match(/^<([A-Z][A-Za-z0-9_]*)\\b/);\n if (!component && start) {\n flushMarkdown();\n component = [line];\n componentName = start[1];\n if (/\\/>\\s*$/.test(line)) flushComponent();\n continue;\n }\n\n if (component) {\n component.push(line);\n if (new RegExp(`</${componentName}>\\\\s*$`).test(line)) {\n flushComponent();\n }\n continue;\n }\n\n markdown.push(line);\n }\n\n flushComponent();\n flushMarkdown();\n return blocks;\n}\n\nfunction renderMarkdownish(source: string): string {\n const lines = source.split(/\\r?\\n/);\n const html: string[] = [];\n let inCode = false;\n let codeLines: string[] = [];\n let listLines: string[] = [];\n\n function flushList() {\n if (listLines.length === 0) return;\n html.push(\n `<ul>${listLines.map((line) => `<li>${escapeHtml(line)}</li>`).join(\"\")}</ul>`,\n );\n listLines = [];\n }\n\n function flushCode() {\n if (!inCode) return;\n html.push(`<pre><code>${escapeHtml(codeLines.join(\"\\n\"))}</code></pre>`);\n codeLines = [];\n inCode = false;\n }\n\n for (const line of lines) {\n if (line.startsWith(\"```\")) {\n if (inCode) flushCode();\n else {\n flushList();\n inCode = true;\n codeLines = [];\n }\n continue;\n }\n if (inCode) {\n codeLines.push(line);\n continue;\n }\n\n const heading = line.match(/^(#{1,4})\\s+(.+)$/);\n if (heading) {\n flushList();\n const level = Math.min(heading[1].length, 4);\n html.push(`<h${level}>${escapeHtml(heading[2].trim())}</h${level}>`);\n continue;\n }\n\n const bullet = line.match(/^\\s*[-*]\\s+(.+)$/);\n if (bullet) {\n listLines.push(bullet[1]);\n continue;\n }\n\n if (!line.trim()) {\n flushList();\n continue;\n }\n\n flushList();\n html.push(`<p>${escapeHtml(line.trim())}</p>`);\n }\n\n flushCode();\n flushList();\n return html.join(\"\\n\");\n}\n\nexport function readLocalPlanFiles(dir: string): LocalPlanFiles {\n const resolved = path.resolve(dir);\n const planPath = path.join(resolved, \"plan.mdx\");\n if (!fs.existsSync(planPath)) {\n throw new Error(`Missing local plan source: ${planPath}`);\n }\n const readOptional = (file: string) => {\n const abs = path.join(resolved, file);\n return fs.existsSync(abs) ? fs.readFileSync(abs, \"utf-8\") : undefined;\n };\n return {\n dir: resolved,\n planMdx: fs.readFileSync(planPath, \"utf-8\"),\n canvasMdx: readOptional(\"canvas.mdx\"),\n prototypeMdx: readOptional(\"prototype.mdx\"),\n stateJson: readOptional(\".plan-state.json\"),\n };\n}\n\nexport function buildLocalPlanPreviewHtml(\n input: LocalPlanPreviewInput,\n): string {\n const files = readLocalPlanFiles(input.dir);\n const parsed = stripFrontmatter(files.planMdx);\n const title =\n input.title ||\n parsed.frontmatter.title ||\n firstHeading(parsed.body) ||\n path.basename(files.dir);\n const brief = input.brief || parsed.frontmatter.brief || \"\";\n const kind = input.kind || normalizeKind(parsed.frontmatter.kind);\n const blocks = splitMdxBlocks(parsed.body);\n const sourceFiles = [\n [\"plan.mdx\", files.planMdx],\n [\"canvas.mdx\", files.canvasMdx],\n [\"prototype.mdx\", files.prototypeMdx],\n [\".plan-state.json\", files.stateJson],\n ].filter((entry): entry is [string, string] => Boolean(entry[1]));\n\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${escapeHtml(title)}</title>\n <style>\n :root {\n color-scheme: light dark;\n --bg: #f8fafc;\n --paper: #ffffff;\n --ink: #0f172a;\n --muted: #64748b;\n --line: #cbd5e1;\n --accent: #2563eb;\n --soft: #eff6ff;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n }\n @media (prefers-color-scheme: dark) {\n :root {\n --bg: #020617;\n --paper: #0f172a;\n --ink: #e2e8f0;\n --muted: #94a3b8;\n --line: #334155;\n --soft: #172554;\n }\n }\n body { margin: 0; background: var(--bg); color: var(--ink); }\n main { max-width: 1040px; margin: 0 auto; padding: 40px 20px 56px; }\n header { margin-bottom: 28px; }\n h1 { font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1; margin: 0 0 12px; }\n h2 { font-size: 1.35rem; margin: 28px 0 10px; }\n h3 { font-size: 1.05rem; margin: 0 0 8px; }\n p, li { line-height: 1.65; }\n .meta { display: flex; flex-wrap: wrap; gap: 8px; color: var(--muted); font-size: 0.9rem; }\n .pill { border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: var(--paper); }\n .notice { background: var(--soft); border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; margin: 18px 0; }\n .block, details { background: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 18px; margin: 14px 0; }\n .component summary { cursor: pointer; color: var(--accent); font-weight: 650; }\n pre { overflow: auto; border-radius: 8px; border: 1px solid var(--line); padding: 14px; background: rgba(148, 163, 184, 0.12); }\n code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.9rem; }\n .source-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }\n </style>\n</head>\n<body>\n <main>\n <header>\n <div class=\"meta\">\n <span class=\"pill\">${kind === \"recap\" ? \"Visual recap\" : \"Visual plan\"}</span>\n <span class=\"pill\">Local-files mode</span>\n <span class=\"pill\">No DB writes</span>\n </div>\n <h1>${escapeHtml(title)}</h1>\n ${brief ? `<p>${escapeHtml(brief)}</p>` : \"\"}\n <div class=\"notice\">\n This preview was generated entirely from local files. It does not call\n the Plan MCP server, the Plan app action surface, a hosted service, or a\n database. Edit the MDX files and regenerate this preview to update it.\n </div>\n </header>\n <section>\n ${blocks\n .map((block) =>\n block.type === \"component\"\n ? `<details class=\"component block\" open><summary>${escapeHtml(\n block.name || \"MDX component\",\n )}</summary><pre><code>${escapeHtml(block.value)}</code></pre></details>`\n : `<article class=\"block\">${renderMarkdownish(block.value)}</article>`,\n )\n .join(\"\\n\")}\n </section>\n <section>\n <h2>Local Source Files</h2>\n <div class=\"source-tabs\">\n ${sourceFiles\n .map(\n ([name, source]) =>\n `<details><summary>${escapeHtml(name)}</summary><pre><code>${escapeHtml(\n source,\n )}</code></pre></details>`,\n )\n .join(\"\\n\")}\n </div>\n </section>\n </main>\n</body>\n</html>\n`;\n}\n\nexport function writeLocalPlanPreview(input: {\n dir: string;\n out?: string;\n kind?: LocalPlanKind;\n title?: string;\n brief?: string;\n}): LocalPlanPreviewResult {\n const dir = path.resolve(input.dir);\n const parsed = stripFrontmatter(readLocalPlanFiles(dir).planMdx);\n const kind = input.kind || normalizeKind(parsed.frontmatter.kind);\n const title =\n input.title ||\n parsed.frontmatter.title ||\n firstHeading(parsed.body) ||\n path.basename(dir);\n const out = path.resolve(input.out || path.join(dir, \"preview.html\"));\n fs.mkdirSync(path.dirname(out), { recursive: true });\n fs.writeFileSync(out, buildLocalPlanPreviewHtml({ ...input, dir, kind }));\n const files = [\n \"plan.mdx\",\n \"canvas.mdx\",\n \"prototype.mdx\",\n \".plan-state.json\",\n ].filter((file) => fs.existsSync(path.join(dir, file)));\n return {\n ok: true,\n dir,\n out,\n url: pathToFileURL(out).href,\n title,\n kind,\n files,\n };\n}\n\nfunction writeLocalPlanSkeleton(input: {\n dir?: string;\n title: string;\n brief?: string;\n kind: LocalPlanKind;\n force?: boolean;\n}): { ok: true; dir: string; files: string[] } {\n const dir = path.resolve(\n input.dir || path.join(defaultPlansDir(), localPlanFolderName(input.title)),\n );\n const planPath = path.join(dir, \"plan.mdx\");\n if (fs.existsSync(planPath) && !input.force) {\n throw new Error(\n `${planPath} already exists. Pass --force to replace the skeleton.`,\n );\n }\n fs.mkdirSync(dir, { recursive: true });\n const title = input.title;\n const brief =\n input.brief ||\n (input.kind === \"recap\"\n ? \"Local visual recap generated without Plan app database writes.\"\n : \"Local visual plan generated without Plan app database writes.\");\n const mdx = [\n \"---\",\n `title: \"${title.replace(/\"/g, '\\\\\"')}\"`,\n `brief: \"${brief.replace(/\"/g, '\\\\\"')}\"`,\n `kind: \"${input.kind}\"`,\n \"localOnly: true\",\n \"---\",\n \"\",\n `# ${title}`,\n \"\",\n brief,\n \"\",\n \"## Review Surface\",\n \"\",\n \"Author the structured plan or recap here. You can add Agent-Native Plan MDX\",\n \"blocks such as `<WireframeBlock />`, `<Diagram />`, `<TabsBlock />`,\",\n \"`<FileTree />`, or `<Diff />`; the local preview will show the source\",\n \"without publishing it to the Plan app.\",\n \"\",\n ].join(\"\\n\");\n fs.writeFileSync(planPath, mdx, \"utf-8\");\n fs.writeFileSync(\n path.join(dir, \".plan-state.json\"),\n JSON.stringify(\n {\n localOnly: true,\n kind: input.kind,\n createdAt: new Date().toISOString(),\n },\n null,\n 2,\n ) + \"\\n\",\n \"utf-8\",\n );\n return { ok: true, dir, files: [\"plan.mdx\", \".plan-state.json\"] };\n}\n\nfunction runInit(args: Record<string, string | boolean>): void {\n const title = optionalArg(args, \"title\") || \"Untitled local visual plan\";\n const result = writeLocalPlanSkeleton({\n dir: optionalArg(args, \"dir\"),\n title,\n brief: optionalArg(args, \"brief\"),\n kind: normalizeKind(optionalArg(args, \"kind\")),\n force: boolArg(args, \"force\"),\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nfunction runCheck(args: Record<string, string | boolean>): void {\n const dir = stringArg(args, \"dir\");\n const files = readLocalPlanFiles(dir);\n const parsed = stripFrontmatter(files.planMdx);\n const result = {\n ok: true,\n noDb: true,\n dir: files.dir,\n title: parsed.frontmatter.title || firstHeading(parsed.body),\n kind: normalizeKind(parsed.frontmatter.kind),\n files: {\n \"plan.mdx\": Buffer.byteLength(files.planMdx),\n ...(files.canvasMdx\n ? { \"canvas.mdx\": Buffer.byteLength(files.canvasMdx) }\n : {}),\n ...(files.prototypeMdx\n ? { \"prototype.mdx\": Buffer.byteLength(files.prototypeMdx) }\n : {}),\n ...(files.stateJson\n ? { \".plan-state.json\": Buffer.byteLength(files.stateJson) }\n : {}),\n },\n };\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nfunction runPreview(args: Record<string, string | boolean>): void {\n const result = writeLocalPlanPreview({\n dir: stringArg(args, \"dir\"),\n out: optionalArg(args, \"out\"),\n title: optionalArg(args, \"title\"),\n brief: optionalArg(args, \"brief\"),\n kind: optionalArg(args, \"kind\")\n ? normalizeKind(optionalArg(args, \"kind\"))\n : undefined,\n });\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n}\n\nasync function runBlocks(\n args: Record<string, string | boolean>,\n): Promise<void> {\n const format = normalizePlanBlockFormat(optionalArg(args, \"format\"));\n const appUrl =\n optionalArg(args, \"app-url\") ||\n process.env.PLAN_BLOCKS_APP_URL ||\n process.env.PLAN_RECAP_APP_URL ||\n DEFAULT_PLAN_APP_URL;\n const out = optionalArg(args, \"out\") || defaultPlanBlocksOut(format);\n const useClack = Boolean(process.stdout.isTTY) && !boolArg(args, \"json\");\n let stopSpinner: ((message?: string) => void) | undefined;\n let clack: typeof import(\"@clack/prompts\") | undefined;\n\n if (useClack) {\n clack = await import(\"@clack/prompts\");\n const spinner = clack.spinner();\n spinner.start(\"Fetching Plan block catalog\");\n stopSpinner = (message?: string) => spinner.stop(message);\n }\n\n try {\n const result = await fetchPlanBlockCatalog({\n appUrl,\n format,\n out,\n });\n if (!useClack || !clack) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n stopSpinner?.(\"Fetched Plan block catalog\");\n clack.note(\n [\n `Output ${path.resolve(result.out)}`,\n `Format ${result.format}`,\n typeof result.count === \"number\" ? `Blocks ${result.count}` : \"\",\n \"Privacy No plan content sent\",\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n \"Plan block catalog\",\n );\n clack.outro(`Wrote ${result.out}`);\n } catch (error) {\n if (useClack && clack) {\n stopSpinner?.(\"Plan block catalog fetch failed\");\n clack.cancel(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n throw error;\n }\n}\n\nconst HELP = `agent-native plan — local Agent-Native Plan helpers\n\nUsage:\n agent-native plan blocks [--format reference|schema] [--app-url <url>] [--out <file>] [--json]\n agent-native plan local init --title <title> [--brief <text>] [--kind plan|recap] [--dir <folder>] [--force]\n agent-native plan local check --dir <folder>\n agent-native plan local preview --dir <folder> [--out preview.html] [--kind plan|recap]\n\nThe blocks command fetches the no-auth, read-only get-plan-blocks catalog from\nthe Plan app and writes plan-blocks.md (or plan-blocks.schema.json). It sends no\nplan content and is safe for local-files authoring before writing MDX. It uses a\nclack UI in interactive terminals and prints JSON for non-interactive shells or\nwhen --json is passed.\n\nThe local subcommands are the privacy-focused no-DB path. They only read and\nwrite local files: plan.mdx, optional canvas.mdx, optional prototype.mdx, and\noptional .plan-state.json. They do not call the Plan MCP server, the Plan app\nwrite actions, hosted storage, or SQLite.\n\nCommon flow:\n agent-native plan blocks --out plan-blocks.md\n agent-native plan local init --title \"Checkout review\" --kind plan\n agent-native plan local preview --dir plans/checkout-review\n`;\n\nexport async function runPlan(argv: string[]): Promise<void> {\n const [area, sub, ...rest] = argv;\n if (area === \"blocks\") {\n await runBlocks(parseArgs(argv.slice(1)));\n return;\n }\n if (area !== \"local\") {\n // Bare `agent-native plan` / `plan help` / `plan --help` → show help on\n // stdout and exit 0 (informational, not an error).\n if (\n area === undefined ||\n area === \"help\" ||\n area === \"--help\" ||\n area === \"-h\"\n ) {\n process.stdout.write(HELP);\n return;\n }\n // A non-empty, unrecognised area (e.g. `agent-native plan lokal`) is an\n // error: print to stderr so the CI log captures it, and exit 1 so callers\n // can detect the failure. This mirrors the existing behaviour for unknown\n // subcommands inside `plan local`.\n process.stderr.write(`Unknown plan area: ${area}\\n${HELP}`);\n process.exit(1);\n }\n const args = parseArgs(rest);\n switch (sub) {\n case \"init\":\n runInit(args);\n return;\n case \"check\":\n runCheck(args);\n return;\n case \"preview\":\n runPreview(args);\n return;\n case \"help\":\n case \"--help\":\n case \"-h\":\n case undefined:\n process.stdout.write(HELP);\n return;\n default:\n process.stderr.write(`Unknown plan local subcommand: ${sub}\\n${HELP}`);\n process.exit(1);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../../src/cli/recap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recap.d.ts","sourceRoot":"","sources":["../../src/cli/recap.ts"],"names":[],"mappings":"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"}
package/dist/cli/recap.js CHANGED
@@ -38,6 +38,7 @@ import { createHash } from "node:crypto";
38
38
  import fs from "node:fs";
39
39
  import path from "node:path";
40
40
  import { readPlanPublishAuth } from "./plan-publish-store.js";
41
+ import { DEFAULT_PLAN_APP_URL, fetchPlanBlockCatalog, planActionEndpoint, } from "./plan-blocks.js";
41
42
  import { PR_VISUAL_RECAP_WORKFLOW_YML } from "./pr-visual-recap-workflow.js";
42
43
  import { BUILT_IN_APP_SKILLS, VISUAL_RECAP_SKILL_MD } from "./skills.js";
43
44
  /* -------------------------------------------------------------------------- */
@@ -194,7 +195,7 @@ export function writePrVisualRecapReusableCallerWorkflow(baseDir, options = {})
194
195
  fs.writeFileSync(file, content);
195
196
  return { status: "written", path: rel, existed: false };
196
197
  }
197
- const DEFAULT_RECAP_APP_URL = "https://plan.agent-native.com";
198
+ const DEFAULT_RECAP_APP_URL = DEFAULT_PLAN_APP_URL;
198
199
  export function normalizeRecapAgent(value) {
199
200
  const agent = (value || "claude").toLowerCase();
200
201
  if (agent === "codex")
@@ -1634,9 +1635,6 @@ export function readRecapSourcePayload(filePath = RECAP_SOURCE_FILENAME) {
1634
1635
  }
1635
1636
  return validateRecapSourcePayload(parsed);
1636
1637
  }
1637
- function recapActionEndpoint(appUrl, action) {
1638
- return `${appUrl.replace(/\/$/, "")}/_agent-native/actions/${action}`;
1639
- }
1640
1638
  async function fetchJsonWithTimeout(url, init, fetchFn) {
1641
1639
  return await fetchFn(url, {
1642
1640
  ...init,
@@ -1644,45 +1642,13 @@ async function fetchJsonWithTimeout(url, init, fetchFn) {
1644
1642
  });
1645
1643
  }
1646
1644
  export async function fetchRecapBlockReference(input) {
1647
- const fetchFn = input.fetchFn ?? fetch;
1648
- const out = input.out ?? "recap-blocks.md";
1649
- const endpoint = new URL(recapActionEndpoint(input.appUrl, "get-plan-blocks"));
1650
- endpoint.searchParams.set("format", "reference");
1651
- // The get-plan-blocks route can transiently 404/timeout while a plan-app
1652
- // deploy is still propagating to cold-start instances. Retry a few times so
1653
- // the recap authors against the LIVE block reference instead of silently
1654
- // falling back to bundled (possibly-stale) block tags — stale tags are what
1655
- // make create-visual-recap reject the authored MDX downstream.
1656
- let lastError = "";
1657
- for (let attempt = 1; attempt <= 4; attempt += 1) {
1658
- try {
1659
- const response = await fetchJsonWithTimeout(endpoint.toString(), { method: "GET", headers: { accept: "application/json" } }, fetchFn);
1660
- if (!response.ok) {
1661
- const detail = await response.text().catch(() => "");
1662
- lastError = `get-plan-blocks failed ${response.status} ${response.statusText}: ${sanitizeAgentFailureSummary(detail, 500)}`;
1663
- if (attempt < 4 && shouldRetryRecapPublish(response.status)) {
1664
- await delay(attempt * 1500);
1665
- continue;
1666
- }
1667
- throw new Error(lastError);
1668
- }
1669
- const json = (await response.json().catch(() => null));
1670
- if (!json?.reference) {
1671
- throw new Error("get-plan-blocks returned no reference text.");
1672
- }
1673
- fs.writeFileSync(path.resolve(out), json.reference);
1674
- return { ok: true, out, count: json.count };
1675
- }
1676
- catch (err) {
1677
- lastError = err instanceof Error ? err.message : String(err);
1678
- if (attempt < 4) {
1679
- await delay(attempt * 1500);
1680
- continue;
1681
- }
1682
- throw new Error(lastError);
1683
- }
1684
- }
1685
- throw new Error(lastError || "get-plan-blocks failed.");
1645
+ const result = await fetchPlanBlockCatalog({
1646
+ appUrl: input.appUrl,
1647
+ out: input.out ?? "recap-blocks.md",
1648
+ format: "reference",
1649
+ fetchFn: input.fetchFn,
1650
+ });
1651
+ return { ok: true, out: result.out, count: result.count };
1686
1652
  }
1687
1653
  function recapUrlFromPublishResult(result, appUrl) {
1688
1654
  const candidates = [];
@@ -1777,7 +1743,7 @@ export async function publishRecapSource(input) {
1777
1743
  status: "review",
1778
1744
  mdx: source.mdx,
1779
1745
  };
1780
- const endpoint = recapActionEndpoint(input.appUrl, "create-visual-recap");
1746
+ const endpoint = planActionEndpoint(input.appUrl, "create-visual-recap");
1781
1747
  const fetchFn = input.fetchFn ?? fetch;
1782
1748
  let lastError = "";
1783
1749
  for (let attempt = 1; attempt <= 3; attempt += 1) {