@squadbase/vantage 0.5.3-dev.71d2349 → 0.6.0-dev.3cc6138

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 (120) hide show
  1. package/NOTICE +73 -0
  2. package/README.md +3 -3
  3. package/dist/add-S62E5MSP.js +6 -0
  4. package/dist/add-S62E5MSP.js.map +1 -0
  5. package/dist/{build-756WIEVI.js → build-XXKKX6KB.js} +10 -10
  6. package/dist/{build-756WIEVI.js.map → build-XXKKX6KB.js.map} +1 -1
  7. package/dist/{check-KZ5PHCA6.js → check-X2TDOILH.js} +8 -8
  8. package/dist/{check-KZ5PHCA6.js.map → check-X2TDOILH.js.map} +1 -1
  9. package/dist/{chunk-L3TW4FNA.js → chunk-46PPUW6Y.js} +34 -13
  10. package/dist/chunk-46PPUW6Y.js.map +1 -0
  11. package/dist/chunk-5ZOP4SQR.js +47 -0
  12. package/dist/chunk-5ZOP4SQR.js.map +1 -0
  13. package/dist/{chunk-BAM33YZ6.js → chunk-B45WAO5Q.js} +6 -5
  14. package/dist/chunk-B45WAO5Q.js.map +1 -0
  15. package/dist/{chunk-HQDEYCDP.js → chunk-CIJWVFJD.js} +3 -3
  16. package/dist/{chunk-HQDEYCDP.js.map → chunk-CIJWVFJD.js.map} +1 -1
  17. package/dist/chunk-FVWU275X.js +91 -0
  18. package/dist/chunk-FVWU275X.js.map +1 -0
  19. package/dist/{chunk-VXAV2435.js → chunk-KLEIVDUV.js} +30 -7
  20. package/dist/chunk-KLEIVDUV.js.map +1 -0
  21. package/dist/{chunk-RA6Z3OX3.js → chunk-LCN36MYX.js} +61 -9
  22. package/dist/chunk-LCN36MYX.js.map +1 -0
  23. package/dist/{chunk-JC6MT5UU.js → chunk-MXI3PZFT.js} +3 -3
  24. package/dist/{chunk-JC6MT5UU.js.map → chunk-MXI3PZFT.js.map} +1 -1
  25. package/dist/chunk-PLST5Q7T.js +2221 -0
  26. package/dist/chunk-PLST5Q7T.js.map +1 -0
  27. package/dist/chunk-PVTHHV7X.js +105 -0
  28. package/dist/chunk-PVTHHV7X.js.map +1 -0
  29. package/dist/{chunk-EHPJXDJU.js → chunk-SVNOWE5U.js} +4 -2
  30. package/dist/chunk-SVNOWE5U.js.map +1 -0
  31. package/dist/{chunk-C4MQRWXS.js → chunk-TDUIW7LD.js} +17 -3
  32. package/dist/chunk-TDUIW7LD.js.map +1 -0
  33. package/dist/{chunk-X44ZTKID.js → chunk-V2FV5OJ6.js} +61 -9
  34. package/dist/chunk-V2FV5OJ6.js.map +1 -0
  35. package/dist/{chunk-PSEYFYAP.js → chunk-VVOXG6ZU.js} +68 -8
  36. package/dist/chunk-VVOXG6ZU.js.map +1 -0
  37. package/dist/{chunk-D4Y5RWJA.js → chunk-YE4CPCXX.js} +81 -21
  38. package/dist/chunk-YE4CPCXX.js.map +1 -0
  39. package/dist/cli.js +15 -14
  40. package/dist/cli.js.map +1 -1
  41. package/dist/client/index.d.ts +5 -35
  42. package/dist/client/index.js +1 -1
  43. package/dist/components/index.js +3 -2212
  44. package/dist/components/index.js.map +1 -1
  45. package/dist/{dev-EILX2VTF.js → dev-4MQQDHA4.js} +10 -10
  46. package/dist/{dev-EILX2VTF.js.map → dev-4MQQDHA4.js.map} +1 -1
  47. package/dist/{docs-GP2ZHIQF.js → docs-OTFWTCPW.js} +4 -4
  48. package/dist/{docs-GP2ZHIQF.js.map → docs-OTFWTCPW.js.map} +1 -1
  49. package/dist/{doctor-FXZLMGC3.js → doctor-QXA6DURZ.js} +8 -8
  50. package/dist/{doctor-FXZLMGC3.js.map → doctor-QXA6DURZ.js.map} +1 -1
  51. package/dist/manifest-ttGMFi-Z.d.ts +43 -0
  52. package/dist/{preview-WBQPCTTT.js → preview-HVOM27FS.js} +4 -4
  53. package/dist/{preview-WBQPCTTT.js.map → preview-HVOM27FS.js.map} +1 -1
  54. package/dist/query/index.js +1 -102
  55. package/dist/query/index.js.map +1 -1
  56. package/dist/router/index.d.ts +10 -0
  57. package/dist/router/index.js +2 -89
  58. package/dist/router/index.js.map +1 -1
  59. package/dist/{routes-WCN4KSZY.js → routes-2QRAKMGK.js} +17 -8
  60. package/dist/routes-2QRAKMGK.js.map +1 -0
  61. package/dist/{search-GLKCJXSI.js → search-7A43AZ7M.js} +4 -4
  62. package/dist/{search-GLKCJXSI.js.map → search-7A43AZ7M.js.map} +1 -1
  63. package/dist/server/node.d.ts +1 -1
  64. package/dist/server/node.js +6 -1
  65. package/dist/server/node.js.map +1 -1
  66. package/dist/slide/index.d.ts +230 -0
  67. package/dist/slide/index.js +1571 -0
  68. package/dist/slide/index.js.map +1 -0
  69. package/dist/table/index.d.ts +107 -0
  70. package/dist/table/index.js +680 -0
  71. package/dist/table/index.js.map +1 -0
  72. package/dist/types-DQjLpLCs.d.ts +121 -0
  73. package/dist/ui/index.js +3 -41
  74. package/dist/ui/index.js.map +1 -1
  75. package/dist/{upgrade-S64IXL42.js → upgrade-2QCP7UQQ.js} +9 -9
  76. package/dist/upgrade-2QCP7UQQ.js.map +1 -0
  77. package/dist/vite/index.d.ts +1 -1
  78. package/dist/vite/index.js +5 -5
  79. package/docs/en/agent-skills.md +19 -12
  80. package/docs/en/changelog.md +77 -0
  81. package/docs/en/cli-reference.md +8 -4
  82. package/docs/en/pages-and-metadata.md +17 -0
  83. package/docs/en/routing.md +75 -3
  84. package/docs/en/ui-and-theming.md +76 -0
  85. package/docs/index.json +2 -2
  86. package/docs/ja/agent-skills.md +18 -11
  87. package/docs/ja/changelog.md +75 -0
  88. package/docs/ja/cli-reference.md +8 -4
  89. package/docs/ja/pages-and-metadata.md +17 -0
  90. package/docs/ja/routing.md +71 -3
  91. package/docs/ja/ui-and-theming.md +74 -0
  92. package/package.json +17 -3
  93. package/skills/vantage-app/SKILL.md +4 -0
  94. package/skills/vantage-pitfalls/SKILL.md +41 -1
  95. package/skills/vantage-slide/SKILL.md +264 -0
  96. package/skills/vantage-slide/references/morph.md +102 -0
  97. package/skills/vantage-slide/references/steps.md +57 -0
  98. package/skills/vantage-slide/references/tokens.md +87 -0
  99. package/skills/vantage-slide/references/transitions.md +196 -0
  100. package/templates/AGENTS.md +28 -230
  101. package/templates/agents/api.md +49 -0
  102. package/templates/agents/csv.md +32 -0
  103. package/templates/agents/page.md +185 -0
  104. package/templates/agents/slide.md +34 -0
  105. package/templates/agents/xlsx.md +33 -0
  106. package/theme.css +28 -0
  107. package/dist/add-PPCBMWEN.js +0 -6
  108. package/dist/add-PPCBMWEN.js.map +0 -1
  109. package/dist/chunk-BAM33YZ6.js.map +0 -1
  110. package/dist/chunk-C4MQRWXS.js.map +0 -1
  111. package/dist/chunk-D4Y5RWJA.js.map +0 -1
  112. package/dist/chunk-EHPJXDJU.js.map +0 -1
  113. package/dist/chunk-L3TW4FNA.js.map +0 -1
  114. package/dist/chunk-PSEYFYAP.js.map +0 -1
  115. package/dist/chunk-RA6Z3OX3.js.map +0 -1
  116. package/dist/chunk-VXAV2435.js.map +0 -1
  117. package/dist/chunk-X44ZTKID.js.map +0 -1
  118. package/dist/routes-WCN4KSZY.js.map +0 -1
  119. package/dist/types-De3mo_hv.d.ts +0 -59
  120. package/dist/upgrade-S64IXL42.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/profile.ts","../src/core/scan.ts"],"names":[],"mappings":"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","file":"chunk-YE4CPCXX.js","sourcesContent":["/**\n * Opt-in phase timing, enabled with `VANTAGE_PROFILE=1`.\n *\n * Every line goes to **stderr**, so turning it on never corrupts the `--json`\n * payloads other commands write to stdout. Disabled, `timed()` is a direct call\n * through — no timers, no allocation.\n */\n\nconst ENABLED = Boolean(process.env.VANTAGE_PROFILE)\n\n/** Whether profiling output is on. Cheap enough to branch on in hot paths. */\nexport const profiling = ENABLED\n\nfunction report(label: string, ms: number): void {\n const since = (performance.now() / 1000).toFixed(3)\n process.stderr.write(`[vantage:profile] ${label.padEnd(24)} ${ms.toFixed(1).padStart(8)}ms @${since}s\\n`)\n}\n\n/** Time a synchronous phase. */\nexport function timed<T>(label: string, fn: () => T): T {\n if (!ENABLED) return fn()\n const t0 = performance.now()\n try {\n return fn()\n } finally {\n report(label, performance.now() - t0)\n }\n}\n\n/** Time an asynchronous phase. */\nexport async function timedAsync<T>(label: string, fn: () => Promise<T>): Promise<T> {\n if (!ENABLED) return fn()\n const t0 = performance.now()\n try {\n return await fn()\n } finally {\n report(label, performance.now() - t0)\n }\n}\n\n/** Record a one-off duration measured by the caller. */\nexport function note(label: string, ms: number): void {\n if (ENABLED) report(label, ms)\n}\n","import fs from \"node:fs\"\nimport path from \"node:path\"\nimport {\n API_EXTENSIONS,\n FILE_PAGE_EXTENSIONS,\n NON_ROUTE_DIRS,\n PAGE_EXTENSIONS,\n PAGE_VARIANTS,\n RESERVED_PAGE_NAMES,\n SRC_DIR,\n UNSUPPORTED_PAGE_EXTENSIONS,\n} from \"./constants\"\nimport type { FilePageExt, PageVariant } from \"./constants\"\nimport { timed } from \"./profile\"\nimport type {\n ApiRoute,\n LayoutRoute,\n PageRoute,\n RouteModel,\n Segment,\n UnroutedFile,\n} from \"./types\"\n\n/** Convert an absolute path to a project-relative POSIX path. */\nfunction toPosix(root: string, abs: string): string {\n return path.relative(root, abs).split(path.sep).join(\"/\")\n}\n\n/** Parse one raw path token into a segment descriptor. */\nfunction parseRawSegment(raw: string): Segment {\n const catchall = raw.match(/^\\[\\.\\.\\.(.+)\\]$/)\n if (catchall) return { kind: \"catchall\", name: catchall[1]! }\n const param = raw.match(/^\\[(.+)\\]$/)\n if (param) return { kind: \"param\", name: param[1]! }\n return { kind: \"static\", value: raw }\n}\n\n/** Build a human/display route path from segments. */\nfunction displayPath(segments: Segment[]): string {\n if (segments.length === 0) return \"/\"\n const parts = segments.map((s) => {\n if (s.kind === \"static\") return s.value\n if (s.kind === \"param\") return `:${s.name}`\n return \"*\"\n })\n return \"/\" + parts.join(\"/\")\n}\n\n/** Split a relative POSIX file (without extension) into route segments. */\nfunction fileToSegments(relNoExt: string): Segment[] {\n const raw = relNoExt.split(\"/\")\n // A trailing `index` maps to its directory (drop it).\n if (raw[raw.length - 1] === \"index\") raw.pop()\n return raw.map(parseRawSegment)\n}\n\n/** Strip a known extension from a filename. */\nfunction stripExt(file: string, exts: string[]): string {\n for (const ext of exts) {\n if (file.endsWith(ext)) return file.slice(0, -ext.length)\n }\n return file\n}\n\n/**\n * Split a page-kind suffix off a name that has already lost its extension:\n * `june.slide` -> `{ base: \"june\", variant: \"slide\" }`, `june` -> variant null.\n * A bare `.slide.tsx` (empty base) is a nameless page, not a variant.\n */\nexport function splitPageVariant(nameNoExt: string): { base: string; variant: PageVariant | null } {\n for (const variant of PAGE_VARIANTS) {\n const suffix = `.${variant}`\n if (nameNoExt.endsWith(suffix) && nameNoExt.length > suffix.length) {\n return { base: nameNoExt.slice(0, -suffix.length), variant }\n }\n }\n return { base: nameNoExt, variant: null }\n}\n\n/**\n * Case-insensitive match against the data-file extensions, returning the\n * canonical (lowercased) form. `stripExt` cannot be reused here: it matches\n * case-sensitively, and `REPORT.CSV` must still lose exactly its extension\n * while its stem keeps its own case.\n */\nfunction matchFilePageExt(base: string): FilePageExt | undefined {\n const lower = base.toLowerCase()\n return FILE_PAGE_EXTENSIONS.find((ext) => lower.endsWith(ext))\n}\n\n/** Excel and Numbers drop a `~$book.xlsx` lock file while a workbook is open. */\nfunction isLockFile(base: string): boolean {\n return base.startsWith(\"~$\")\n}\n\nfunction hasExt(file: string, exts: string[]): boolean {\n return exts.some((ext) => file.endsWith(ext))\n}\n\n/** Recursively collect files under a directory, respecting ignore rules. */\nfunction walk(dir: string, root: string, out: string[]): void {\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const entry of entries) {\n const abs = path.join(dir, entry.name)\n if (entry.isDirectory()) {\n if (NON_ROUTE_DIRS.has(entry.name)) continue\n if (entry.name.startsWith(\".\")) continue\n walk(abs, root, out)\n } else if (entry.isFile()) {\n out.push(abs)\n }\n }\n}\n\n/**\n * Decide where pages are scanned from: `<root>/src` when that directory exists,\n * the project root otherwise. The two never mix — a project that has `src/`\n * keeps every page inside it (`SRC_DIR_SPLIT` reports the leftovers).\n */\nexport function resolvePageRoot(root: string): { dir: string; abs: string } {\n const abs = path.join(root, SRC_DIR)\n try {\n if (fs.statSync(abs).isDirectory()) return { dir: SRC_DIR, abs }\n } catch {\n /* no src/ — pages live at the project root */\n }\n return { dir: \"\", abs: root }\n}\n\n/**\n * Discover page and layout routes under the page root. `file` stays relative to\n * the *project* root (generated imports resolve from `.vantage/`), while\n * `dir`/`segments`/`routePath` are relative to the *page* root so that `src/`\n * never leaks into a URL — and so `dir` keeps matching `segments` one-to-one,\n * which is how `buildRouteTree` pairs pages with their layouts.\n */\nfunction scanPages(\n root: string,\n pageRoot: string,\n): {\n pages: PageRoute[]\n layouts: LayoutRoute[]\n notFound: string | null\n error: string | null\n unrouted: UnroutedFile[]\n} {\n const files: string[] = []\n walk(pageRoot, pageRoot, files)\n\n const pages: PageRoute[] = []\n const layouts: LayoutRoute[] = []\n const unrouted: UnroutedFile[] = []\n let notFound: string | null = null\n let error: string | null = null\n\n for (const abs of files) {\n const file = toPosix(root, abs)\n const rel = toPosix(pageRoot, abs)\n const base = path.posix.basename(rel)\n const dir = path.posix.dirname(rel)\n const dirPosix = dir === \".\" ? \"\" : dir\n\n if (hasExt(base, PAGE_EXTENSIONS)) {\n const nameNoExt = stripExt(base, PAGE_EXTENSIONS)\n // Reserved modules are matched on the full name: `_layout.slide` is not\n // `_layout`, and a variant on a reserved module is an error the\n // diagnostics report rather than a route.\n if (nameNoExt === RESERVED_PAGE_NAMES.layout) {\n layouts.push({ file, absFile: abs, dir: dirPosix })\n continue\n }\n if (nameNoExt === RESERVED_PAGE_NAMES.notFound) {\n if (dirPosix === \"\") notFound = file\n continue\n }\n if (nameNoExt === RESERVED_PAGE_NAMES.error) {\n if (dirPosix === \"\") error = file\n continue\n }\n\n const { base: pageName, variant } = splitPageVariant(nameNoExt)\n // Any other underscore-prefixed file is a private module, not a route.\n // The test runs on the name with its variant suffix removed, so\n // `_layout.slide.tsx` and `_draft.slide.tsx` both drop out here.\n if (pageName.startsWith(\"_\")) {\n if (variant) unrouted.push({ file, reason: \"variant\", variant })\n continue\n }\n\n const relNoExt = stripExt(rel, PAGE_EXTENSIONS)\n // The variant suffix always sits at the end of the final token, so\n // trimming the tail is enough to keep it out of the URL.\n const relForSegments = variant ? relNoExt.slice(0, -(variant.length + 1)) : relNoExt\n const segments = fileToSegments(relForSegments)\n const routePath = displayPath(segments)\n const dynamic = segments.some((s) => s.kind !== \"static\")\n pages.push({\n file,\n absFile: abs,\n routePath,\n segments,\n dir: dirPosix,\n dynamic,\n kind: \"module\",\n ...(variant ? { variant } : {}),\n })\n continue\n }\n\n const fileExt = matchFilePageExt(base)\n if (fileExt) {\n // Same privacy rules as page modules, plus spreadsheet lock files.\n if (base.startsWith(\"_\") || base.startsWith(\".\") || isLockFile(base)) continue\n const relNoExt = rel.slice(0, -fileExt.length)\n const segments = fileToSegments(relNoExt)\n const routePath = displayPath(segments)\n const dynamic = segments.some((s) => s.kind !== \"static\")\n pages.push({\n file,\n absFile: abs,\n routePath,\n segments,\n dir: dirPosix,\n dynamic,\n kind: \"file\",\n fileExt,\n })\n continue\n }\n\n const lower = base.toLowerCase()\n // A page-kind suffix on something that is not a page module at all\n // (`deck.slide.ts`, `deck.slide.css`) is a typo worth naming.\n const strayVariant = PAGE_VARIANTS.find((v) => lower.includes(`.${v}.`))\n if (strayVariant) {\n unrouted.push({ file, reason: \"variant\", variant: strayVariant })\n } else if (UNSUPPORTED_PAGE_EXTENSIONS.some((ext) => lower.endsWith(ext))) {\n unrouted.push({ file, reason: \"extension\" })\n }\n }\n\n // Stable ordering: shallow before deep, static before dynamic, alpha. Data\n // files share the key, so they interleave with modules instead of clumping.\n pages.sort((a, b) => routeSortKey(a).localeCompare(routeSortKey(b)))\n layouts.sort((a, b) => a.dir.localeCompare(b.dir))\n unrouted.sort((a, b) => a.file.localeCompare(b.file))\n return { pages, layouts, notFound, error, unrouted }\n}\n\n/** Sort key that keeps static routes ahead of dynamic ones at each depth. */\nfunction routeSortKey(p: PageRoute): string {\n return p.segments\n .map((s) => (s.kind === \"static\" ? \"0\" + s.value : s.kind === \"param\" ? \"1\" : \"2\"))\n .join(\"/\")\n}\n\n/** Discover server API routes under `server/api`. */\nfunction scanApis(root: string): ApiRoute[] {\n const apiDir = path.join(root, \"server\", \"api\")\n if (!fs.existsSync(apiDir)) return []\n\n const files: string[] = []\n const walkApi = (dir: string) => {\n let entries: fs.Dirent[]\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true })\n } catch {\n return\n }\n for (const entry of entries) {\n const abs = path.join(dir, entry.name)\n if (entry.isDirectory()) walkApi(abs)\n else if (entry.isFile()) files.push(abs)\n }\n }\n walkApi(apiDir)\n\n const apis: ApiRoute[] = []\n for (const abs of files) {\n const base = path.basename(abs)\n if (!hasExt(base, API_EXTENSIONS)) continue\n const nameNoExt = stripExt(base, API_EXTENSIONS)\n // Type declaration files and private helpers are not routes.\n if (base.endsWith(\".d.ts\")) continue\n if (nameNoExt.startsWith(\"_\")) continue\n\n const relFromServer = toPosix(path.join(root, \"server\"), abs) // e.g. api/customers/[id].ts\n const relNoExt = stripExt(relFromServer, API_EXTENSIONS) // api/customers/[id]\n const withoutApiPrefix = relNoExt.replace(/^api\\/?/, \"\") // customers/[id] or \"\" for api/index\n const segTokens = withoutApiPrefix === \"\" ? [] : withoutApiPrefix.split(\"/\")\n if (segTokens[segTokens.length - 1] === \"index\") segTokens.pop()\n const segments = segTokens.map(parseRawSegment)\n const routePath = \"/api\" + (segments.length ? displayPath(segments) : \"\")\n const params = segments\n .filter((s) => s.kind !== \"static\")\n .map((s) => (s as { name: string }).name)\n\n apis.push({\n file: toPosix(root, abs),\n absFile: abs,\n routePath,\n pattern: routePath,\n segments,\n params,\n })\n }\n\n apis.sort((a, b) => a.routePath.localeCompare(b.routePath))\n return apis\n}\n\n/** Scan a project into a full route model. */\nexport function scanProject(root: string): RouteModel {\n return timed(\"scan\", () => {\n const pageRoot = resolvePageRoot(root)\n const { pages, layouts, notFound, error, unrouted } = scanPages(root, pageRoot.abs)\n // server/ is always at the project root: it is the other side of the\n // client/server boundary, not part of the client source tree.\n const hasServer = fs.existsSync(path.join(root, \"server\"))\n const apis = hasServer ? scanApis(root) : []\n return { pages, layouts, notFound, error, apis, hasServer, pageDir: pageRoot.dir, unrouted }\n })\n}\n\n/** Convert a display route path segment list into a TanStack Router path. */\nexport function toRouterPath(segments: Segment[]): string {\n if (segments.length === 0) return \"/\"\n const parts = segments.map((s) => {\n if (s.kind === \"static\") return s.value\n if (s.kind === \"param\") return `$${s.name}`\n return \"$\" // TanStack splat\n })\n return \"/\" + parts.join(\"/\")\n}\n"]}
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { parseArgs, frameworkVersion, resolveQuickRoot, log, resolveRoot } from './chunk-HQDEYCDP.js';
3
- import './chunk-C4MQRWXS.js';
2
+ import { parseArgs, frameworkVersion, resolveQuickRoot, log, resolveRoot } from './chunk-CIJWVFJD.js';
3
+ import './chunk-TDUIW7LD.js';
4
4
  import path from 'path';
5
5
  import pc from 'picocolors';
6
6
 
@@ -18,11 +18,12 @@ ${pc.bold("Commands")}
18
18
  check Static verification (routes, boundaries, forbidden files)
19
19
  routes Show page and API URL map (--pages | --apis | --detail)
20
20
  add <kind> <name> Scaffold a page | api | ui | block | skill | agents
21
- (add skill with no name lists the skills and where they sit)
21
+ (add skill with no name lists the skills and where they sit;
22
+ add agents places AGENTS.md + agents/*.md)
22
23
  docs [name] Show the bundled guide and component reference
23
24
  search <query> Find components and docs by meaning, or by regex
24
25
  doctor Environment and installation health checks
25
- upgrade Regenerate artifacts, sync AGENTS.md / apply migrations
26
+ upgrade Regenerate artifacts, sync AGENTS.md + agents/ / apply migrations
26
27
 
27
28
  ${pc.bold("Options")}
28
29
  --json Machine-readable output (check, routes, doctor, build, docs, search)
@@ -45,16 +46,16 @@ ${pc.bold("Options")}
45
46
  -h, --help Print this help
46
47
  `;
47
48
  var COMMANDS = {
48
- dev: () => import('./dev-EILX2VTF.js').then((m) => m.dev),
49
- build: () => import('./build-756WIEVI.js').then((m) => m.build),
50
- preview: () => import('./preview-WBQPCTTT.js').then((m) => m.preview),
51
- check: () => import('./check-KZ5PHCA6.js').then((m) => m.check),
52
- routes: () => import('./routes-WCN4KSZY.js').then((m) => m.routes),
53
- add: () => import('./add-PPCBMWEN.js').then((m) => m.add),
54
- docs: () => import('./docs-GP2ZHIQF.js').then((m) => m.docs),
55
- search: () => import('./search-GLKCJXSI.js').then((m) => m.search),
56
- doctor: () => import('./doctor-FXZLMGC3.js').then((m) => m.doctor),
57
- upgrade: () => import('./upgrade-S64IXL42.js').then((m) => m.upgrade)
49
+ dev: () => import('./dev-4MQQDHA4.js').then((m) => m.dev),
50
+ build: () => import('./build-XXKKX6KB.js').then((m) => m.build),
51
+ preview: () => import('./preview-HVOM27FS.js').then((m) => m.preview),
52
+ check: () => import('./check-X2TDOILH.js').then((m) => m.check),
53
+ routes: () => import('./routes-2QRAKMGK.js').then((m) => m.routes),
54
+ add: () => import('./add-S62E5MSP.js').then((m) => m.add),
55
+ docs: () => import('./docs-OTFWTCPW.js').then((m) => m.docs),
56
+ search: () => import('./search-7A43AZ7M.js').then((m) => m.search),
57
+ doctor: () => import('./doctor-QXA6DURZ.js').then((m) => m.doctor),
58
+ upgrade: () => import('./upgrade-2QCP7UQQ.js').then((m) => m.upgrade)
58
59
  };
59
60
  var NO_ROOT_POSITIONAL = /* @__PURE__ */ new Set(["add", "docs", "search"]);
60
61
  async function main() {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"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","file":"cli.js","sourcesContent":["#!/usr/bin/env node\nimport path from \"node:path\"\nimport pc from \"picocolors\"\nimport {\n frameworkVersion,\n log,\n parseArgs,\n resolveQuickRoot,\n resolveRoot,\n type ParsedArgs,\n} from \"./cli/util\"\n\nconst HELP = `${pc.bold(pc.magenta(\"vantage\"))} — data dashboard framework for Squadbase\n\n${pc.bold(\"Usage\")}\n vantage <command> [path] [options]\n vantage <path> Quick dev shortcut (folder or entry file)\n\n${pc.bold(\"Commands\")}\n dev Start the dev server (HMR + optional API)\n build Build client and optional server into dist/\n preview Run the production build locally\n check Static verification (routes, boundaries, forbidden files)\n routes Show page and API URL map (--pages | --apis | --detail)\n add <kind> <name> Scaffold a page | api | ui | block | skill | agents\n (add skill with no name lists the skills and where they sit)\n docs [name] Show the bundled guide and component reference\n search <query> Find components and docs by meaning, or by regex\n doctor Environment and installation health checks\n upgrade Regenerate artifacts, sync AGENTS.md / apply migrations\n\n${pc.bold(\"Options\")}\n --json Machine-readable output (check, routes, doctor, build, docs, search)\n --port <n> Port for dev/preview — exact: fails when it is taken\n --strict-port Require the default port too (dev/preview)\n --no-strict-port Let --port fall through to the next free port\n --no-overlay Hide the full-screen HMR error overlay (dev)\n --root <dir> Project root (default: cwd)\n --force Overwrite when scaffolding\n --pages Show only page routes (routes)\n --apis Show only API routes (routes)\n --detail Add each route's static spec (routes)\n --list List pages without showing one (docs)\n --lang <ja|en> Documentation language (docs, search, default: ja)\n --regex Treat the query as a regular expression (search)\n --limit <n> Max results (search, default: 10)\n --all Add every bundled skill (add skill --all) | show every page (docs)\n --dir <path> Where to place skills when none is found (add skill, default: project root)\n -v, --version Print version\n -h, --help Print this help\n`\n\ntype Command = (root: string, args: ParsedArgs) => Promise<number>\n\n/**\n * Commands are loaded on demand, never statically. A static import graph would\n * pull Vite and the Tailwind plugin into *every* invocation — ~165ms of module\n * loading that `check`, `routes`, `docs`, `search` and `add` never use (and\n * that even `--version` used to pay). Keep these as `import()` thunks: tsup's\n * code splitting then emits one chunk per command and the dispatcher stays\n * dependency-free.\n */\ntype CommandLoader = () => Promise<Command>\n\nconst COMMANDS: Record<string, CommandLoader> = {\n dev: () => import(\"./cli/dev\").then((m) => m.dev),\n build: () => import(\"./cli/build\").then((m) => m.build),\n preview: () => import(\"./cli/preview\").then((m) => m.preview),\n check: () => import(\"./cli/check\").then((m) => m.check),\n routes: () => import(\"./cli/routes\").then((m) => m.routes),\n add: () => import(\"./cli/add\").then((m) => m.add),\n docs: () => import(\"./cli/docs\").then((m) => m.docs),\n search: () => import(\"./cli/search\").then((m) => m.search),\n doctor: () => import(\"./cli/doctor\").then((m) => m.doctor),\n upgrade: () => import(\"./cli/upgrade\").then((m) => m.upgrade),\n}\n\n/**\n * Commands whose trailing positionals are their own arguments, not a project\n * root: `add` takes kind/name, `docs` a page name, `search` a query.\n */\nconst NO_ROOT_POSITIONAL = new Set([\"add\", \"docs\", \"search\"])\n\nasync function main(): Promise<void> {\n const args = parseArgs(process.argv.slice(2))\n const command = args.positionals[0]\n\n if (args.flags.version || args.flags.v) {\n console.log(frameworkVersion())\n return\n }\n if (!command || args.flags.help || args.flags.h || command === \"help\") {\n console.log(HELP)\n return\n }\n\n let load = COMMANDS[command]\n let root: string\n\n if (load) {\n // Known command. Every root-scoped command may take a trailing path\n // positional as its root, except the ones that use positionals themselves.\n const targetArg = !NO_ROOT_POSITIONAL.has(command) ? args.positionals[1] : undefined\n if (targetArg !== undefined) {\n const quick = resolveQuickRoot(targetArg)\n if (!quick) {\n log.error(`No such file or directory: \"${targetArg}\"`)\n process.exitCode = 1\n return\n }\n root = quick\n } else {\n root = resolveRoot(args.flags)\n }\n } else {\n // Unknown first positional: if it's a path, quick-run dev on it; else error.\n const quick = resolveQuickRoot(command)\n if (!quick) {\n log.error(`Unknown command \"${command}\".`)\n console.log(HELP)\n process.exitCode = 1\n return\n }\n load = COMMANDS.dev!\n root = quick\n log.brand(`quick dev → ${path.relative(process.cwd(), root) || \".\"}`)\n }\n\n try {\n const run = await load()\n const code = await run(root, args)\n process.exitCode = code\n } catch (err) {\n log.error(err instanceof Error ? err.message : String(err))\n if (process.env.VANTAGE_DEBUG && err instanceof Error) console.error(err.stack)\n process.exitCode = 1\n }\n}\n\nvoid main()\n"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;AAYA,IAAM,IAAA,GAAO,GAAG,EAAA,CAAG,IAAA,CAAK,GAAG,OAAA,CAAQ,SAAS,CAAC,CAAC,CAAA;;AAAA,EAE5C,EAAA,CAAG,IAAA,CAAK,OAAO,CAAC;AAAA;AAAA;;AAAA,EAIhB,EAAA,CAAG,IAAA,CAAK,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAcnB,EAAA,CAAG,IAAA,CAAK,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAiCpB,IAAM,QAAA,GAA0C;AAAA,EAC9C,GAAA,EAAK,MAAM,OAAO,mBAAW,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,GAAG,CAAA;AAAA,EAChD,KAAA,EAAO,MAAM,OAAO,qBAAa,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA;AAAA,EACtD,OAAA,EAAS,MAAM,OAAO,uBAAe,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,CAAA;AAAA,EAC5D,KAAA,EAAO,MAAM,OAAO,qBAAa,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA;AAAA,EACtD,MAAA,EAAQ,MAAM,OAAO,sBAAc,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAA;AAAA,EACzD,GAAA,EAAK,MAAM,OAAO,mBAAW,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,GAAG,CAAA;AAAA,EAChD,IAAA,EAAM,MAAM,OAAO,oBAAY,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA;AAAA,EACnD,MAAA,EAAQ,MAAM,OAAO,sBAAc,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAA;AAAA,EACzD,MAAA,EAAQ,MAAM,OAAO,sBAAc,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAA;AAAA,EACzD,OAAA,EAAS,MAAM,OAAO,uBAAe,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO;AAC9D,CAAA;AAMA,IAAM,qCAAqB,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAE5D,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,OAAO,SAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA;AAElC,EAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,IAAA,CAAK,MAAM,CAAA,EAAG;AACtC,IAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAAA;AAC9B,IAAA;AAAA,EACF;AACA,EAAA,IAAI,CAAC,WAAW,IAAA,CAAK,KAAA,CAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,CAAA,IAAK,OAAA,KAAY,MAAA,EAAQ;AACrE,IAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,GAAO,SAAS,OAAO,CAAA;AAC3B,EAAA,IAAI,IAAA;AAEJ,EAAA,IAAI,IAAA,EAAM;AAGR,IAAA,MAAM,SAAA,GAAY,CAAC,kBAAA,CAAmB,GAAA,CAAI,OAAO,CAAA,GAAI,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA,GAAI,MAAA;AAC3E,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,MAAM,KAAA,GAAQ,iBAAiB,SAAS,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,GAAA,CAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,SAAS,CAAA,CAAA,CAAG,CAAA;AACrD,QAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,QAAA;AAAA,MACF;AACA,MAAA,IAAA,GAAO,KAAA;AAAA,IACT,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,KAAA,GAAQ,iBAAiB,OAAO,CAAA;AACtC,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,GAAA,CAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,OAAO,CAAA,EAAA,CAAI,CAAA;AACzC,MAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,IAAA,GAAO,QAAA,CAAS,GAAA;AAChB,IAAA,IAAA,GAAO,KAAA;AACP,IAAA,GAAA,CAAI,KAAA,CAAM,CAAA,iBAAA,EAAe,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,KAAI,EAAG,IAAI,CAAA,IAAK,GAAG,CAAA,CAAE,CAAA;AAAA,EACtE;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,EAAK;AACvB,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAM,IAAI,CAAA;AACjC,IAAA,OAAA,CAAQ,QAAA,GAAW,IAAA;AAAA,EACrB,SAAS,GAAA,EAAK;AACZ,IAAA,GAAA,CAAI,MAAM,GAAA,YAAe,KAAA,GAAQ,IAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAC1D,IAAA,IAAI,OAAA,CAAQ,IAAI,aAAA,IAAiB,GAAA,YAAe,OAAO,OAAA,CAAQ,KAAA,CAAM,IAAI,KAAK,CAAA;AAC9E,IAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,EACrB;AACF;AAEA,KAAK,IAAA,EAAK","file":"cli.js","sourcesContent":["#!/usr/bin/env node\nimport path from \"node:path\"\nimport pc from \"picocolors\"\nimport {\n frameworkVersion,\n log,\n parseArgs,\n resolveQuickRoot,\n resolveRoot,\n type ParsedArgs,\n} from \"./cli/util\"\n\nconst HELP = `${pc.bold(pc.magenta(\"vantage\"))} — data dashboard framework for Squadbase\n\n${pc.bold(\"Usage\")}\n vantage <command> [path] [options]\n vantage <path> Quick dev shortcut (folder or entry file)\n\n${pc.bold(\"Commands\")}\n dev Start the dev server (HMR + optional API)\n build Build client and optional server into dist/\n preview Run the production build locally\n check Static verification (routes, boundaries, forbidden files)\n routes Show page and API URL map (--pages | --apis | --detail)\n add <kind> <name> Scaffold a page | api | ui | block | skill | agents\n (add skill with no name lists the skills and where they sit;\n add agents places AGENTS.md + agents/*.md)\n docs [name] Show the bundled guide and component reference\n search <query> Find components and docs by meaning, or by regex\n doctor Environment and installation health checks\n upgrade Regenerate artifacts, sync AGENTS.md + agents/ / apply migrations\n\n${pc.bold(\"Options\")}\n --json Machine-readable output (check, routes, doctor, build, docs, search)\n --port <n> Port for dev/preview — exact: fails when it is taken\n --strict-port Require the default port too (dev/preview)\n --no-strict-port Let --port fall through to the next free port\n --no-overlay Hide the full-screen HMR error overlay (dev)\n --root <dir> Project root (default: cwd)\n --force Overwrite when scaffolding\n --pages Show only page routes (routes)\n --apis Show only API routes (routes)\n --detail Add each route's static spec (routes)\n --list List pages without showing one (docs)\n --lang <ja|en> Documentation language (docs, search, default: ja)\n --regex Treat the query as a regular expression (search)\n --limit <n> Max results (search, default: 10)\n --all Add every bundled skill (add skill --all) | show every page (docs)\n --dir <path> Where to place skills when none is found (add skill, default: project root)\n -v, --version Print version\n -h, --help Print this help\n`\n\ntype Command = (root: string, args: ParsedArgs) => Promise<number>\n\n/**\n * Commands are loaded on demand, never statically. A static import graph would\n * pull Vite and the Tailwind plugin into *every* invocation — ~165ms of module\n * loading that `check`, `routes`, `docs`, `search` and `add` never use (and\n * that even `--version` used to pay). Keep these as `import()` thunks: tsup's\n * code splitting then emits one chunk per command and the dispatcher stays\n * dependency-free.\n */\ntype CommandLoader = () => Promise<Command>\n\nconst COMMANDS: Record<string, CommandLoader> = {\n dev: () => import(\"./cli/dev\").then((m) => m.dev),\n build: () => import(\"./cli/build\").then((m) => m.build),\n preview: () => import(\"./cli/preview\").then((m) => m.preview),\n check: () => import(\"./cli/check\").then((m) => m.check),\n routes: () => import(\"./cli/routes\").then((m) => m.routes),\n add: () => import(\"./cli/add\").then((m) => m.add),\n docs: () => import(\"./cli/docs\").then((m) => m.docs),\n search: () => import(\"./cli/search\").then((m) => m.search),\n doctor: () => import(\"./cli/doctor\").then((m) => m.doctor),\n upgrade: () => import(\"./cli/upgrade\").then((m) => m.upgrade),\n}\n\n/**\n * Commands whose trailing positionals are their own arguments, not a project\n * root: `add` takes kind/name, `docs` a page name, `search` a query.\n */\nconst NO_ROOT_POSITIONAL = new Set([\"add\", \"docs\", \"search\"])\n\nasync function main(): Promise<void> {\n const args = parseArgs(process.argv.slice(2))\n const command = args.positionals[0]\n\n if (args.flags.version || args.flags.v) {\n console.log(frameworkVersion())\n return\n }\n if (!command || args.flags.help || args.flags.h || command === \"help\") {\n console.log(HELP)\n return\n }\n\n let load = COMMANDS[command]\n let root: string\n\n if (load) {\n // Known command. Every root-scoped command may take a trailing path\n // positional as its root, except the ones that use positionals themselves.\n const targetArg = !NO_ROOT_POSITIONAL.has(command) ? args.positionals[1] : undefined\n if (targetArg !== undefined) {\n const quick = resolveQuickRoot(targetArg)\n if (!quick) {\n log.error(`No such file or directory: \"${targetArg}\"`)\n process.exitCode = 1\n return\n }\n root = quick\n } else {\n root = resolveRoot(args.flags)\n }\n } else {\n // Unknown first positional: if it's a path, quick-run dev on it; else error.\n const quick = resolveQuickRoot(command)\n if (!quick) {\n log.error(`Unknown command \"${command}\".`)\n console.log(HELP)\n process.exitCode = 1\n return\n }\n load = COMMANDS.dev!\n root = quick\n log.brand(`quick dev → ${path.relative(process.cwd(), root) || \".\"}`)\n }\n\n try {\n const run = await load()\n const code = await run(root, args)\n process.exitCode = code\n } catch (err) {\n log.error(err instanceof Error ? err.message : String(err))\n if (process.env.VANTAGE_DEBUG && err instanceof Error) console.error(err.stack)\n process.exitCode = 1\n }\n}\n\nvoid main()\n"]}
@@ -1,37 +1,7 @@
1
- import { ComponentType } from 'react';
2
- import { a as PageConfig } from '../define-page-BfhrK99G.js';
3
-
4
- /** A page module as loaded by a route loader. */
5
- interface PageModule {
6
- default: ComponentType<unknown>;
7
- page?: PageConfig;
8
- }
9
- /** Lazy loader for a page/layout module. */
10
- type Loader = () => Promise<PageModule>;
11
- interface ClientLayout {
12
- id: string;
13
- parentId: string | null;
14
- path: string;
15
- load: Loader;
16
- }
17
- interface ClientPage {
18
- parentLayoutId: string | null;
19
- path: string;
20
- index: boolean;
21
- routePath: string;
22
- title?: string;
23
- description?: string;
24
- navLabel?: string;
25
- load: Loader;
26
- }
27
- /** The route manifest emitted into `.vantage/route-tree.gen.ts`. */
28
- interface ClientManifest {
29
- rootLayout: Loader | null;
30
- notFound: Loader | null;
31
- error: Loader | null;
32
- layouts: ClientLayout[];
33
- pages: ClientPage[];
34
- }
1
+ import { a as ClientManifest } from '../manifest-ttGMFi-Z.js';
2
+ export { C as ClientLayout, b as ClientPage, L as Loader, P as PageModule } from '../manifest-ttGMFi-Z.js';
3
+ import 'react';
4
+ import '../define-page-BfhrK99G.js';
35
5
 
36
6
  /**
37
7
  * Client entrypoint. The generated `.vantage/client-entry.tsx` calls this with
@@ -43,4 +13,4 @@ interface ClientManifest {
43
13
  */
44
14
  declare function bootstrap(manifest: ClientManifest): void;
45
15
 
46
- export { type ClientLayout, type ClientManifest, type ClientPage, type Loader, type PageModule, bootstrap };
16
+ export { ClientManifest, bootstrap };
@@ -1,5 +1,5 @@
1
+ import { setRoutes } from '../chunk-SVNOWE5U.js';
1
2
  import { createQueryClient } from '../chunk-DTDVSFRY.js';
2
- import { setRoutes } from '../chunk-EHPJXDJU.js';
3
3
  import { StrictMode, Component } from 'react';
4
4
  import { createRoot } from 'react-dom/client';
5
5
  import { RouterProvider, createRootRoute, createRoute, createRouter, Outlet, lazyRouteComponent } from '@tanstack/react-router';