ai-spector 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"prototype.d.ts","sourceRoot":"","sources":["../../src/commands/prototype.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzF;AAYD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrF;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFvF;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BxF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyErF;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,GAAE,+BAAoC,GACzC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"prototype.d.ts","sourceRoot":"","sources":["../../src/commands/prototype.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzF;AAYD,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrF;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFvF;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BxF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFrF;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,GAAE,+BAAoC,GACzC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -82,7 +82,7 @@ export async function runPrototypeSetup(opts = {}) {
82
82
  await mkdir(srcDir, { recursive: true });
83
83
  const scaffoldProto = join(scaffoldBundleRoot(), "prototype");
84
84
  if (await pathExists(scaffoldProto)) {
85
- for (const name of ["README.md", "CLAUDE.md"]) {
85
+ for (const name of ["README.md", "CLAUDE.md", "route-defaults.example.json"]) {
86
86
  const dest = join(prototypeRoot, name);
87
87
  const src = join(scaffoldProto, name);
88
88
  if (await pathExists(src) && !(await pathExists(dest))) {
@@ -268,10 +268,12 @@ export async function runPrototypeSync(opts = {}) {
268
268
  skipCopy: opts.skipCopy ?? false,
269
269
  screenMapPath: paths.screenMapPath,
270
270
  screenCount: built.screenCount,
271
+ prototypeBypassAuth: built.screenMap.prototypeBypassAuth,
271
272
  screens: built.screenMap.screens.map((s) => ({
272
273
  screenId: s.screenId,
273
274
  screenDoc: s.screenDoc,
274
275
  uri: s.uri,
276
+ previewUri: s.previewUri ?? s.uri,
275
277
  buildDest,
276
278
  })),
277
279
  }, null, 2));
@@ -283,7 +285,13 @@ export async function runPrototypeSync(opts = {}) {
283
285
  console.log("");
284
286
  console.log("Screen URI mapping:");
285
287
  for (const s of built.screenMap.screens) {
286
- console.log(` ${s.screenDoc.padEnd(40)} ${s.uri}`);
288
+ const open = s.previewUri ?? s.uri;
289
+ const suffix = open !== s.uri ? ` (pattern: ${s.uri})` : "";
290
+ console.log(` ${s.screenDoc.padEnd(40)} → ${open}${suffix}`);
291
+ }
292
+ if (built.screenMap.prototypeBypassAuth) {
293
+ console.log("");
294
+ console.log(" prototypeBypassAuth: true — SPA should allow direct previewUri access without login");
287
295
  }
288
296
  }
289
297
  export async function runPrototypeInstallPreviews(opts = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"prototype.js","sourceRoot":"","sources":["../../src/commands/prototype.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prototype.js","sourceRoot":"","sources":["../../src/commands/prototype.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-manifest.d.ts","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAiBpB,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,4BAA4B,CAAC,CAgGvC;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1D"}
1
+ {"version":3,"file":"build-manifest.d.ts","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAkBpB,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,4BAA4B,CAAC,CAyHvC;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAM1D"}
@@ -3,6 +3,7 @@ import { readFile } from "node:fs/promises";
3
3
  import { access } from "node:fs/promises";
4
4
  import { parseScreenIndexFromList } from "./parse-screen-index.js";
5
5
  import { assertDefaultScreenInPool, resolveDefaultScreenId, } from "./resolve-default-screen.js";
6
+ import { applyRouteDefaults, loadRouteDefaults } from "./route-defaults.js";
6
7
  import { pathExists, readJson, writeJson } from "../util/fs.js";
7
8
  async function htmlExists(projectRoot, relativePath) {
8
9
  try {
@@ -38,20 +39,42 @@ export async function buildPrototypeManifest(opts) {
38
39
  ...(r.userRole ? { userRole: r.userRole } : {}),
39
40
  }));
40
41
  const buildMode = opts.config.buildMode ?? "static";
42
+ const routeDefaults = await loadRouteDefaults(opts.projectRoot, opts.config.prototypeDir);
43
+ const screenMapPath = join(opts.projectRoot, opts.config.prototypeDir, "screen-map.json");
44
+ let previousDefault;
45
+ let previousBypassAuth;
46
+ const previousScreensById = new Map();
47
+ if (await pathExists(screenMapPath)) {
48
+ const prior = await readJson(screenMapPath);
49
+ previousDefault = prior.defaultScreenId;
50
+ previousBypassAuth = prior.prototypeBypassAuth;
51
+ for (const s of prior.screens ?? []) {
52
+ previousScreensById.set(s.screenId, s);
53
+ }
54
+ }
41
55
  const mapScreens = await Promise.all(rows.map(async (r) => {
42
56
  const exists = await htmlExists(opts.projectRoot, r.prototypePath);
43
57
  if (exists) {
44
58
  htmlCount++;
45
59
  }
46
- const uri = buildMode === "spa" ? `/${r.slug}` : `/src/${r.prototypeStem}.html`;
60
+ const baseUri = buildMode === "spa" ? `/${r.slug}` : `/src/${r.prototypeStem}.html`;
61
+ const prior = previousScreensById.get(r.screenId);
62
+ const routeApplied = applyRouteDefaults({
63
+ screenId: r.screenId,
64
+ slug: r.slug,
65
+ buildMode,
66
+ baseUri,
67
+ fromFile: routeDefaults?.screens[r.screenId],
68
+ fromPriorEntry: prior,
69
+ });
47
70
  return {
48
71
  screenId: r.screenId,
49
72
  displayName: r.displayName,
50
73
  screenDoc: r.screenDoc,
51
74
  prototypeStem: r.prototypeStem,
52
75
  prototypePath: r.prototypePath,
53
- uri,
54
76
  htmlExists: exists,
77
+ ...routeApplied,
55
78
  };
56
79
  }));
57
80
  const manifest = {
@@ -60,12 +83,6 @@ export async function buildPrototypeManifest(opts) {
60
83
  generatedAt,
61
84
  screens: manifestScreens,
62
85
  };
63
- let previousDefault;
64
- const screenMapPath = join(opts.projectRoot, opts.config.prototypeDir, "screen-map.json");
65
- if (await pathExists(screenMapPath)) {
66
- const prior = await readJson(screenMapPath);
67
- previousDefault = prior.defaultScreenId;
68
- }
69
86
  if (opts.defaultScreenId?.trim()) {
70
87
  assertDefaultScreenInPool(opts.defaultScreenId, mapScreens);
71
88
  }
@@ -74,12 +91,16 @@ export async function buildPrototypeManifest(opts) {
74
91
  previous: previousDefault,
75
92
  configDefault: opts.config.defaultScreenId,
76
93
  });
94
+ const prototypeBypassAuth = routeDefaults?.prototypeBypassAuth ??
95
+ previousBypassAuth ??
96
+ (buildMode === "spa" ? opts.config.prototypeBypassAuth ?? true : undefined);
77
97
  const screenMap = {
78
98
  schemaVersion: 1,
79
99
  themeName: opts.themeName,
80
100
  buildMode,
81
101
  generatedAt,
82
102
  ...(defaultScreenId ? { defaultScreenId } : {}),
103
+ ...(prototypeBypassAuth !== undefined ? { prototypeBypassAuth } : {}),
83
104
  screens: mapScreens,
84
105
  };
85
106
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"build-manifest.js","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-manifest.js","sourceRoot":"","sources":["../../src/prototype/build-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Build a concrete preview URL from a route pattern and default param values.
3
+ * Used in screen-map.json so reviewers can open detail screens without manual URL editing.
4
+ */
5
+ export declare function buildPreviewUri(routePattern: string, routeParams?: Record<string, string>, queryParams?: Record<string, string>): string;
6
+ /** True when the pattern still has unresolved dynamic segments (e.g. :id). */
7
+ export declare function routePatternHasUnresolvedParams(routePattern: string, routeParams?: Record<string, string>): boolean;
8
+ //# sourceMappingURL=preview-uri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-uri.d.ts","sourceRoot":"","sources":["../../src/prototype/preview-uri.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAqBR;AAED,8EAA8E;AAC9E,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAST"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Build a concrete preview URL from a route pattern and default param values.
3
+ * Used in screen-map.json so reviewers can open detail screens without manual URL editing.
4
+ */
5
+ export function buildPreviewUri(routePattern, routeParams, queryParams) {
6
+ let path = routePattern.trim() || "/";
7
+ if (!path.startsWith("/")) {
8
+ path = `/${path}`;
9
+ }
10
+ if (routeParams) {
11
+ for (const [key, value] of Object.entries(routeParams)) {
12
+ const encoded = encodeURIComponent(value);
13
+ path = path.replace(`:${key}`, encoded).replace(`[${key}]`, encoded);
14
+ }
15
+ }
16
+ if (queryParams && Object.keys(queryParams).length > 0) {
17
+ const qs = new URLSearchParams(queryParams).toString();
18
+ if (qs) {
19
+ path += path.includes("?") ? `&${qs}` : `?${qs}`;
20
+ }
21
+ }
22
+ return path;
23
+ }
24
+ /** True when the pattern still has unresolved dynamic segments (e.g. :id). */
25
+ export function routePatternHasUnresolvedParams(routePattern, routeParams) {
26
+ const paramNames = [...routePattern.matchAll(/:([A-Za-z0-9_]+)/g)].map((m) => m[1]);
27
+ if (paramNames.length === 0) {
28
+ return false;
29
+ }
30
+ if (!routeParams) {
31
+ return true;
32
+ }
33
+ return paramNames.some((name) => !routeParams[name]?.trim());
34
+ }
35
+ //# sourceMappingURL=preview-uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-uri.js","sourceRoot":"","sources":["../../src/prototype/preview-uri.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAoB,EACpB,WAAoC,EACpC,WAAoC;IAEpC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,+BAA+B,CAC7C,YAAoB,EACpB,WAAoC;IAEpC,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;IACrF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { PrototypeScreenMapEntry } from "./types.js";
2
+ export interface PrototypeRouteDefaultsScreen {
3
+ /** Router path pattern; defaults to screen slug route `/<slug>`. */
4
+ routePattern?: string;
5
+ /** Default path-param values for preview / deep links (e.g. `{ "id": "demo-001" }`). */
6
+ routeParams?: Record<string, string>;
7
+ /** Default query-string values for preview (e.g. `{ "tab": "overview" }`). */
8
+ queryParams?: Record<string, string>;
9
+ /** When true, production would guard this route; prototype SPA should still allow direct access. */
10
+ requiresAuth?: boolean;
11
+ }
12
+ export interface PrototypeRouteDefaultsFile {
13
+ schemaVersion: 1;
14
+ /**
15
+ * When true (default for prototypes), SPA router guards must not redirect unauthenticated
16
+ * users away from deep-linked routes — reviewers open any screen-map previewUri directly.
17
+ */
18
+ prototypeBypassAuth?: boolean;
19
+ screens: Record<string, PrototypeRouteDefaultsScreen>;
20
+ }
21
+ export declare function routeDefaultsPath(prototypeDir: string): string;
22
+ export declare function loadRouteDefaults(projectRoot: string, prototypeDir: string): Promise<PrototypeRouteDefaultsFile | undefined>;
23
+ export interface ApplyRouteDefaultsInput {
24
+ screenId: string;
25
+ slug: string;
26
+ buildMode: "static" | "spa";
27
+ baseUri: string;
28
+ fromFile?: PrototypeRouteDefaultsScreen;
29
+ fromPriorEntry?: Pick<PrototypeScreenMapEntry, "routePattern" | "routeParams" | "queryParams" | "requiresAuth" | "uri">;
30
+ }
31
+ export interface ApplyRouteDefaultsResult {
32
+ uri: string;
33
+ routePattern?: string;
34
+ routeParams?: Record<string, string>;
35
+ queryParams?: Record<string, string>;
36
+ previewUri?: string;
37
+ requiresAuth?: boolean;
38
+ }
39
+ /**
40
+ * Merge route defaults (file → prior screen-map) and compute previewUri for SPA screens.
41
+ */
42
+ export declare function applyRouteDefaults(input: ApplyRouteDefaultsInput): ApplyRouteDefaultsResult;
43
+ //# sourceMappingURL=route-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-defaults.d.ts","sourceRoot":"","sources":["../../src/prototype/route-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,4BAA4B;IAC3C,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,oGAAoG;IACpG,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;CACvD;AAID,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAUjD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,cAAc,CAAC,EAAE,IAAI,CACnB,uBAAuB,EACvB,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,KAAK,CACxE,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA+B3F"}
@@ -0,0 +1,50 @@
1
+ import { join } from "node:path";
2
+ import { buildPreviewUri, routePatternHasUnresolvedParams } from "./preview-uri.js";
3
+ import { pathExists, readJson } from "../util/fs.js";
4
+ const ROUTE_DEFAULTS_FILE = "route-defaults.json";
5
+ export function routeDefaultsPath(prototypeDir) {
6
+ return join(prototypeDir, ROUTE_DEFAULTS_FILE);
7
+ }
8
+ export async function loadRouteDefaults(projectRoot, prototypeDir) {
9
+ const path = join(projectRoot, prototypeDir, ROUTE_DEFAULTS_FILE);
10
+ if (!(await pathExists(path))) {
11
+ return undefined;
12
+ }
13
+ const raw = await readJson(path);
14
+ if (raw.schemaVersion !== 1 || !raw.screens) {
15
+ return undefined;
16
+ }
17
+ return raw;
18
+ }
19
+ /**
20
+ * Merge route defaults (file → prior screen-map) and compute previewUri for SPA screens.
21
+ */
22
+ export function applyRouteDefaults(input) {
23
+ const merged = {
24
+ routePattern: input.fromPriorEntry?.routePattern ?? input.fromPriorEntry?.uri,
25
+ routeParams: input.fromPriorEntry?.routeParams,
26
+ queryParams: input.fromPriorEntry?.queryParams,
27
+ requiresAuth: input.fromPriorEntry?.requiresAuth,
28
+ ...input.fromFile,
29
+ };
30
+ if (input.buildMode !== "spa") {
31
+ return { uri: input.baseUri };
32
+ }
33
+ const routePattern = merged.routePattern?.trim() || input.fromPriorEntry?.uri || input.baseUri;
34
+ const routeParams = merged.routeParams;
35
+ const queryParams = merged.queryParams;
36
+ const requiresAuth = merged.requiresAuth;
37
+ const hasUnresolved = routePatternHasUnresolvedParams(routePattern, routeParams);
38
+ const previewUri = hasUnresolved
39
+ ? undefined
40
+ : buildPreviewUri(routePattern, routeParams, queryParams);
41
+ return {
42
+ uri: routePattern,
43
+ ...(routePattern !== input.baseUri ? { routePattern } : {}),
44
+ ...(routeParams && Object.keys(routeParams).length > 0 ? { routeParams } : {}),
45
+ ...(queryParams && Object.keys(queryParams).length > 0 ? { queryParams } : {}),
46
+ ...(previewUri ? { previewUri } : {}),
47
+ ...(requiresAuth !== undefined ? { requiresAuth } : {}),
48
+ };
49
+ }
50
+ //# sourceMappingURL=route-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-defaults.js","sourceRoot":"","sources":["../../src/prototype/route-defaults.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,11 @@ export interface PrototypeConfig {
53
53
  /** Repo-relative path to Apache htpasswd file (nginx basic auth). */
54
54
  htpasswdFile: string;
55
55
  basicAuth?: PrototypeBasicAuth;
56
+ /**
57
+ * When true (default for SPA prototypes), router auth guards must allow direct navigation
58
+ * to any screen without forcing login first. Set false to test real auth flows.
59
+ */
60
+ prototypeBypassAuth?: boolean;
56
61
  }
57
62
  export interface ScreenIndexRow {
58
63
  screenId: string;
@@ -85,12 +90,28 @@ export interface PrototypeScreenMapEntry {
85
90
  prototypeStem: string;
86
91
  prototypePath: string;
87
92
  /**
88
- * URI for navigating to this screen.
93
+ * Route path for this screen.
89
94
  * - static mode: "/src/<stem>.html"
90
- * - spa mode: "/<slug>"
95
+ * - spa mode: "/<slug>" or a pattern with params (e.g. "/orders/:id")
91
96
  */
92
97
  uri: string;
93
98
  htmlExists: boolean;
99
+ /**
100
+ * SPA only: explicit router pattern when it differs from the slug-only path.
101
+ * Usually the same as `uri`; set when the app uses param segments.
102
+ */
103
+ routePattern?: string;
104
+ /** SPA only: default path-param values for prototype deep links (e.g. `{ "id": "demo-001" }`). */
105
+ routeParams?: Record<string, string>;
106
+ /** SPA only: default query params appended to `previewUri`. */
107
+ queryParams?: Record<string, string>;
108
+ /**
109
+ * SPA only: concrete URL to open this screen in a browser (params substituted, query appended).
110
+ * Hosting and reviewers use this instead of typing IDs manually.
111
+ */
112
+ previewUri?: string;
113
+ /** SPA only: production would require login; prototype still allows direct `previewUri` access. */
114
+ requiresAuth?: boolean;
94
115
  }
95
116
  export interface PrototypeScreenMap {
96
117
  schemaVersion: 1;
@@ -99,6 +120,11 @@ export interface PrototypeScreenMap {
99
120
  generatedAt: string;
100
121
  /** Entry screen at generation time (from screens with HTML when any exist). */
101
122
  defaultScreenId?: string;
123
+ /**
124
+ * SPA only: when true, generated router must not redirect unauthenticated users to login
125
+ * when opening a deep-linked route (prototype review mode).
126
+ */
127
+ prototypeBypassAuth?: boolean;
102
128
  screens: PrototypeScreenMapEntry[];
103
129
  }
104
130
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prototype/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,uBAAuB,EAAE,CAAC;CACpC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prototype/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-spector",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Cursor-first documentation workflow: traceability graph, SRS/basic/detail design templates, and ai-spector CLI",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -59,7 +59,6 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@types/mdast": "^4.0.4",
62
- "ai-spector": "^0.4.8",
63
62
  "ajv": "^8.17.1",
64
63
  "ajv-formats": "^3.0.1",
65
64
  "commander": "^12.1.0",
@@ -24,6 +24,7 @@ paths:
24
24
  | No theme stored — **must confirm before setup** | [references/theme-picker.md](references/theme-picker.md) |
25
25
  | No basic auth stored | [references/auth-picker.md](references/auth-picker.md) |
26
26
  | Before writing each screen HTML | [references/prototype-graph-context.md](references/prototype-graph-context.md) |
27
+ | SPA buildMode (vue, react, nuxt, …) | [references/spa-prototype.md](references/spa-prototype.md) |
27
28
  | Run of 5+ screens | [../ai-spector/references/context-management.md](../ai-spector/references/context-management.md) |
28
29
  | CLI fails | [../ai-spector/references/cli-failures.md](../ai-spector/references/cli-failures.md) |
29
30
 
@@ -50,6 +50,7 @@ In SPA mode:
50
50
  - Navigation links between screens must use `<slug>`-based routes (e.g. `<router-link to="/login">`)
51
51
  - The `screen-map.json` `uri` values are route paths — the hosting layer (dev server or `serve -s dist`) handles routing
52
52
  - The agent must **not** generate a separate `.html` per screen; there is one `index.html` entrypoint
53
+ - **Prototype routing:** follow [spa-prototype.md](spa-prototype.md) — bypass login redirects for direct review, and set default path/query params in `prototype/route-defaults.json` so `previewUri` deep links work for detail screens
53
54
 
54
55
  ## Usage — three ways to choose targets
55
56
 
@@ -177,6 +178,8 @@ Read `techStack` (and `buildMode`) from `prototype.config.json`. File type and s
177
178
  - There is **one** `index.html` entrypoint — do **not** create per-screen HTML files
178
179
  - Generate a route config file (`router.ts`, `app.routes.ts`, or equivalent) mapping each screen slug to its component
179
180
  - Navigation between screens uses the framework's router component with `uri` from `screen-map.json` as the path
181
+ - **Direct access (no login redirect):** router guards must honor `prototypeBypassAuth` on `screen-map.json` — see [spa-prototype.md](spa-prototype.md)
182
+ - **Param routes:** copy `route-defaults.example.json` → `route-defaults.json`, set `routeParams` / `queryParams` per screen id, run `prototype manifest`, give users the generated `previewUri` links
180
183
 
181
184
  **All stacks:**
182
185
 
@@ -344,6 +347,8 @@ If the agent is asked to "sync prototype", "copy build output", or "update scree
344
347
  - static mode → `/src/<stem>.html`
345
348
  - spa mode → `/<slug>`
346
349
  - [ ] SPA mode only: single `index.html` entrypoint exists; route config generated; navigation uses route paths (not file paths)
350
+ - [ ] SPA mode only: `prototypeBypassAuth` honored in router — reviewers can open any `previewUri` without login
351
+ - [ ] SPA mode only: param/detail screens have `route-defaults.json` entries and non-empty `previewUri` in `screen-map.json`
347
352
  - [ ] External build workflow: `prototype sync` run after framework build; `buildDest` contains the copied files
348
353
 
349
354
  ## On failure
@@ -0,0 +1,82 @@
1
+ # SPA prototype — direct routes and param defaults
2
+
3
+ Load this reference when `buildMode` is `spa` (vue, react, nuxt, next, svelte, angular).
4
+
5
+ ## Why prototype mode differs from production
6
+
7
+ In production, unauthenticated users are redirected to login before seeing app screens. **Prototypes are for visual review** — stakeholders must open any screen directly (including post-login dashboards and detail pages) without walking through auth every time.
8
+
9
+ The agent **must** implement prototype-friendly routing and document deep links in `screen-map.json`.
10
+
11
+ ## 1. Bypass auth redirects (required for SPA)
12
+
13
+ Set `prototypeBypassAuth: true` on `prototype/screen-map.json` (default when running `npx ai-spector prototype manifest` in SPA mode).
14
+
15
+ In the SPA router:
16
+
17
+ - When `prototypeBypassAuth` is true (or unset — treat as true for prototypes), **do not** redirect to login in `beforeEach` / middleware.
18
+ - Still define `meta.requiresAuth` on routes that would be protected in production (matches `requiresAuth` on screen-map entries).
19
+ - Optional: read bypass from `import.meta.env.VITE_PROTOTYPE_BYPASS_AUTH === 'true'` if the app is built outside `prototype/` — keep in sync with screen-map.
20
+
21
+ Starter pattern: [scaffold/prototype/spa/vue/src/prototype-guard.ts](../../../../prototype/spa/vue/src/prototype-guard.ts).
22
+
23
+ Tell the user: *"Open any screen via the previewUri column in screen-map.json — login redirect is disabled in prototype mode."*
24
+
25
+ ## 2. Default URL params in the mapping file (required for param routes)
26
+
27
+ Detail screens use path or query params (`:id`, `?tab=`). Reviewers need a **ready-made URL** without guessing IDs.
28
+
29
+ ### `prototype/route-defaults.json`
30
+
31
+ Copy from `prototype/route-defaults.example.json` and edit per screen id (Screen Index id, e.g. `order-detail`):
32
+
33
+ ```json
34
+ {
35
+ "schemaVersion": 1,
36
+ "prototypeBypassAuth": true,
37
+ "screens": {
38
+ "order-detail": {
39
+ "routePattern": "/orders/:id",
40
+ "routeParams": { "id": "demo-001" },
41
+ "queryParams": { "tab": "summary" },
42
+ "requiresAuth": true
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ Then regenerate the map:
49
+
50
+ ```bash
51
+ npx ai-spector prototype manifest
52
+ ```
53
+
54
+ ### Fields on each `screen-map.json` entry (SPA)
55
+
56
+ | Field | Purpose |
57
+ |-------|---------|
58
+ | `uri` | Router path pattern (e.g. `/orders/:id`) |
59
+ | `routeParams` | Default path param values for preview |
60
+ | `queryParams` | Default query string for preview |
61
+ | `previewUri` | **Open this URL** — concrete path with params filled in |
62
+ | `requiresAuth` | Production would guard; prototype still allows direct access when bypass is on |
63
+
64
+ Simple screens without params only need `uri: "/<slug>"` (auto-generated).
65
+
66
+ ### Router implementation
67
+
68
+ - Register routes using `uri` / `routePattern` from screen-map (e.g. `/orders/:id`).
69
+ - Seed component state from `route.params` / `useRoute()`; when params are missing in dev, fall back to defaults from `route-defaults.json` or hard-coded prototype fixtures matching `routeParams`.
70
+ - Link between screens with the framework router; use `previewUri` in docs/comments for QA bookmarks.
71
+
72
+ ## 3. Agent checklist (SPA)
73
+
74
+ - [ ] `prototype/route-defaults.json` created for any screen with `:param` or required query args
75
+ - [ ] Router guard skips login redirect when `prototypeBypassAuth` is true
76
+ - [ ] Routes registered from screen-map `uri` values
77
+ - [ ] `npx ai-spector prototype manifest` run — every param route has a `previewUri`
78
+ - [ ] User told they can open `previewUri` paths directly (list them in the completion message)
79
+
80
+ ## 4. Static HTML note
81
+
82
+ Static prototypes (`techStack: html`) already use one file per screen — no router bypass. Param-heavy flows may use query strings in the filename link (e.g. `order-detail.html?id=demo-001`) or a dedicated static page per variant; prefer SPA when many param routes exist.
@@ -53,6 +53,13 @@ npx ai-spector prototype sync --clean
53
53
 
54
54
  When the agent sets up a Vite-based stack (vue / react / svelte), it **must** write or verify `base: './'` in `vite.config.ts` before generating any other files. Flag it explicitly to the user if the config is missing or set to `'/'`.
55
55
 
56
+ ## SPA-only: direct routes and param defaults
57
+
58
+ Framework stacks use `buildMode: spa`. After stack selection, follow [spa-prototype.md](spa-prototype.md):
59
+
60
+ - Router must allow **direct navigation** to any screen without login redirect (`prototypeBypassAuth`).
61
+ - Detail screens with URL params need defaults in `prototype/route-defaults.json` → `previewUri` in `screen-map.json`.
62
+
56
63
  ## Step 1 — Check stored stack
57
64
 
58
65
  Read `.ai-spector/.docflow/config/prototype.config.json`. If `techStack` is set, skip this entire flow.
@@ -1,7 +1,7 @@
1
1
  # Prototype agent constraints
2
2
 
3
- - Output only **static HTML** (and optional co-located `.css` / `.js`) under `prototype/src/`.
4
- - One primary `.html` per screen; filename must match `prototypeStem` from `prototype/manifest.json`.
3
+ - **Static HTML** (`techStack: html`): output only HTML/CSS/JS under `prototype/src/` — one `.html` per screen; filename must match `prototypeStem` from `prototype/manifest.json`.
4
+ - **SPA** (`buildMode: spa`): one entrypoint, framework components per screen; honor `prototypeBypassAuth` and `previewUri` in `screen-map.json` (see `route-defaults.example.json` and `spa/vue/`).
5
5
  - **Local asset refs must be relative** — use paths from the current HTML file (`./styles.css`, `./assets/app.js`), not root-absolute paths (`/assets/app.js`). Root-absolute URLs break when the prototype is served from a subdirectory on deploy.
6
6
  - Use design tokens from `prototype/DESIGN.md` only — do not import external fonts/icons unless specified there.
7
7
  - Do not edit `docs/**` while generating prototype files.
@@ -53,3 +53,12 @@ git add prototype/
53
53
  ## Screen → file mapping
54
54
 
55
55
  See `prototype/manifest.json` and `prototype/screen-map.json` (rebuilt by `npx ai-spector prototype manifest`).
56
+
57
+ ## SPA prototypes (Vue, React, …)
58
+
59
+ When `buildMode` is `spa`:
60
+
61
+ 1. **Direct routes** — `screen-map.json` sets `prototypeBypassAuth: true` so the app router must not force login before showing a deep-linked screen.
62
+ 2. **Detail / param URLs** — copy `route-defaults.example.json` to `route-defaults.json`, set default `routeParams` (e.g. `id: "demo-001"`), then run `npx ai-spector prototype manifest`. Open each screen via its `previewUri` in `screen-map.json`.
63
+
64
+ Starter patterns: `prototype/spa/vue/` (router guard helper).
@@ -0,0 +1,15 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "prototypeBypassAuth": true,
4
+ "screens": {
5
+ "order-detail": {
6
+ "routePattern": "/orders/:id",
7
+ "routeParams": { "id": "demo-001" },
8
+ "queryParams": { "tab": "summary" },
9
+ "requiresAuth": true
10
+ },
11
+ "login": {
12
+ "requiresAuth": false
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,44 @@
1
+ # Vue SPA prototype starter
2
+
3
+ Copy these patterns when generating a Vue 3 + Vite + Vue Router prototype. The agent should adapt routes to your `prototype/screen-map.json`.
4
+
5
+ ## Prototype mode (direct routes, no login redirect)
6
+
7
+ Reviewers open any screen via `previewUri` in `screen-map.json` without signing in first.
8
+
9
+ 1. Set `prototypeBypassAuth: true` in `prototype/route-defaults.json` (or rely on the default from `npx ai-spector prototype manifest`).
10
+ 2. In the router guard, skip auth when bypass is enabled:
11
+
12
+ ```ts
13
+ import screenMap from "../../screen-map.json";
14
+
15
+ const bypassAuth = screenMap.prototypeBypassAuth !== false;
16
+
17
+ router.beforeEach((to) => {
18
+ if (bypassAuth) return true;
19
+ if (to.meta.requiresAuth && !isLoggedIn()) {
20
+ return { name: "login", query: { redirect: to.fullPath } };
21
+ }
22
+ return true;
23
+ });
24
+ ```
25
+
26
+ 3. Mark protected routes with `meta: { requiresAuth: true }` to match `requiresAuth` on screen-map entries.
27
+
28
+ ## Route params and preview URIs
29
+
30
+ For detail screens, copy `prototype/route-defaults.example.json` to `prototype/route-defaults.json` and set default param values. Then run:
31
+
32
+ ```bash
33
+ npx ai-spector prototype manifest
34
+ ```
35
+
36
+ Use the generated `previewUri` per screen (e.g. `/orders/demo-001?tab=summary`) for bookmarks and QA links.
37
+
38
+ ## Build
39
+
40
+ ```bash
41
+ # vite.config.ts must use base: './'
42
+ npm run build
43
+ npx ai-spector prototype sync
44
+ ```
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Prototype router guard — allows direct deep links without login when bypass is on.
3
+ * Import screen-map.json from the prototype workspace (path varies per project layout).
4
+ */
5
+ export interface PrototypeScreenMapGuardSource {
6
+ prototypeBypassAuth?: boolean;
7
+ }
8
+
9
+ export function shouldBypassPrototypeAuth(
10
+ screenMap: PrototypeScreenMapGuardSource | undefined,
11
+ ): boolean {
12
+ return screenMap?.prototypeBypassAuth !== false;
13
+ }
14
+
15
+ export function createPrototypeAuthGuard(
16
+ screenMap: PrototypeScreenMapGuardSource | undefined,
17
+ isLoggedIn: () => boolean,
18
+ ): (to: { meta: { requiresAuth?: boolean }; fullPath: string; name?: string | symbol }) =>
19
+ | boolean
20
+ | { name: string; query: { redirect: string } } {
21
+ const bypass = shouldBypassPrototypeAuth(screenMap);
22
+ return (to) => {
23
+ if (bypass) {
24
+ return true;
25
+ }
26
+ if (to.meta.requiresAuth && !isLoggedIn()) {
27
+ return { name: "login", query: { redirect: to.fullPath } };
28
+ }
29
+ return true;
30
+ };
31
+ }