@shanyucoder/flowgrid 0.1.11 → 0.1.12

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.
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs'
6
6
  import path from 'node:path'
7
+ import { buildScreenToFlows } from '../../../engines/docs/lib/screen-to-flows-index.mjs'
7
8
 
8
9
  function loadJson(file) {
9
10
  if (!existsSync(file)) return null
@@ -42,6 +43,9 @@ export function loadDocsIndex(docsRoot) {
42
43
  if (!idx) {
43
44
  return buildDocsIndexFallback(docsRoot)
44
45
  }
46
+ if (!idx.screenToFlows || typeof idx.screenToFlows !== 'object') {
47
+ return { ...idx, screenToFlows: buildScreenToFlows(docsRoot) }
48
+ }
45
49
  return idx
46
50
  }
47
51
 
@@ -83,7 +87,7 @@ function buildDocsIndexFallback(docsRoot) {
83
87
  }
84
88
 
85
89
  scanSurfaces(surfacesDir)
86
- return { version: 1, codeIds, modules }
90
+ return { version: 1, codeIds, modules, screenToFlows: buildScreenToFlows(docsRoot) }
87
91
  }
88
92
 
89
93
  export function loadTestsIndex(testsRoot) {
@@ -5,6 +5,7 @@ import { resolveDocsRoot } from '../config/docs-root.js';
5
5
  import { CANONICAL_DIR, expectedCanonicalPath, indexIds, isRedirectStub, kindOf, relToRoot, walkMdFiles, SCAN_MD_DIRS, listFlowProcessFiles, } from '../scan/ids.js';
6
6
  import { depsFromFiles, dependentsOf, validateMdLinks } from '../scan/links.js';
7
7
  import { routeTopic } from '../scan/route.js';
8
+ import { linkedFlowsForScreen } from '../scan/screen-to-flows.js';
8
9
  import { runEngine } from '../cli/engines.js';
9
10
  function text(data) {
10
11
  return {
@@ -93,11 +94,13 @@ export function registerTools(server) {
93
94
  return { file: rel, excerpt: body.slice(0, cap) };
94
95
  });
95
96
  const expected = expectedCanonicalPath(root, id);
97
+ const linkedFlows = meta.kind === 'W' ? await linkedFlowsForScreen(root, id) : undefined;
96
98
  return text({
97
99
  ok: true,
98
100
  ...meta,
99
101
  canonicalHome: CANONICAL_DIR[meta.kind] ?? null,
100
102
  expectedPath: expected ? relToRoot(root, expected) : null,
103
+ linkedFlows,
101
104
  excerpts,
102
105
  });
103
106
  }
@@ -225,22 +228,72 @@ export function registerTools(server) {
225
228
  return text({ ok: false, error: err instanceof Error ? err.message : String(err) });
226
229
  }
227
230
  });
228
- server.tool('flowgrid_docs_route', 'Map a natural-language topic to arc42 chapter path + skill (/architecture router helper)', {
229
- topic: z.string().describe('e.g. "login sequence", "ADR auth"'),
230
- }, async ({ topic }) => {
231
- return text({ ok: true, topic, routes: routeTopic(topic) });
231
+ server.tool('flowgrid_docs_route', 'Map topic or product id (W-*, FLOW-*) to paths/skills; W-* includes linkedFlows[] from userFlows index', {
232
+ topic: z.string().describe('e.g. "login sequence", "W-ADM-ORD-01", "FLOW-checkout"'),
233
+ docsRoot: z.string().optional(),
234
+ }, async ({ topic, docsRoot }) => {
235
+ try {
236
+ const root = resolveDocsRoot(docsRoot);
237
+ const trimmed = topic.trim();
238
+ if (/^W-/i.test(trimmed)) {
239
+ const linkedFlows = await linkedFlowsForScreen(root, trimmed);
240
+ const exp = expectedCanonicalPath(root, trimmed);
241
+ return text({
242
+ ok: true,
243
+ topic: trimmed,
244
+ kind: 'W',
245
+ expectedPath: exp ? relToRoot(root, exp) : null,
246
+ linkedFlows,
247
+ skill: '/grill-dev',
248
+ note: 'Read FLOW §6 + bundle nfr before codegen (agent-design-context ACP)',
249
+ });
250
+ }
251
+ if (/^FLOW-/i.test(trimmed)) {
252
+ const exp = expectedCanonicalPath(root, trimmed);
253
+ return text({
254
+ ok: true,
255
+ topic: trimmed,
256
+ kind: 'FLOW',
257
+ expectedPath: exp ? relToRoot(root, exp) : null,
258
+ skill: '/user-flow',
259
+ routes: routeTopic('flow journey'),
260
+ });
261
+ }
262
+ return text({ ok: true, topic, routes: routeTopic(topic) });
263
+ }
264
+ catch (err) {
265
+ return text({ ok: false, error: err instanceof Error ? err.message : String(err) });
266
+ }
232
267
  });
233
- server.tool('flowgrid_docs_user_flows', 'List FLOW-* under architecture/03-user-flows and surfaces/**/common/user-flows', {
268
+ server.tool('flowgrid_docs_user_flows', 'List FLOW-* or fetch one FLOW markdown body (architecture/03-user-flows + surfaces/**/common/user-flows)', {
234
269
  docsRoot: z.string().optional(),
235
- }, async ({ docsRoot }) => {
270
+ id: z.string().optional().describe('FLOW-* id — when set, returns file body excerpt'),
271
+ maxChars: z.number().optional().default(12000),
272
+ }, async ({ docsRoot, id, maxChars }) => {
236
273
  try {
237
274
  const root = resolveDocsRoot(docsRoot);
238
275
  const processes = listFlowProcessFiles(root);
276
+ if (id) {
277
+ const hit = processes.find((p) => p.id === id || p.id.toLowerCase() === id.toLowerCase());
278
+ if (!hit)
279
+ return text({ ok: false, error: 'not_found', id });
280
+ const abs = path.join(root, hit.file);
281
+ const body = fs.existsSync(abs) ? fs.readFileSync(abs, 'utf8') : '';
282
+ const cap = Math.min(maxChars ?? 12000, 80000);
283
+ return text({
284
+ ok: true,
285
+ id: hit.id,
286
+ file: hit.file,
287
+ excerpt: body.slice(0, cap),
288
+ hasSequenceSection: /##\s+6\.\s+/i.test(body) || /sequenceDiagram/i.test(body),
289
+ });
290
+ }
239
291
  return text({
240
292
  ok: true,
241
293
  count: processes.length,
242
294
  catalog: 'architecture/03-user-flows/index.md',
243
295
  processes,
296
+ screenToFlowsHint: 'registries/docs-index.json screenToFlows or flowgrid_docs_route W-*',
244
297
  });
245
298
  }
246
299
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/docs/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/docs/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Lazy-load engine implementation (package ships `engines/`). */
2
+ export declare function buildScreenToFlows(docsRoot: string): Promise<Record<string, string[]>>;
3
+ export declare function linkedFlowsForScreen(docsRoot: string, screenId: string): Promise<string[]>;
@@ -0,0 +1,18 @@
1
+ /** Lazy-load engine implementation (package ships `engines/`). */
2
+ let mod = null;
3
+ async function load() {
4
+ if (!mod) {
5
+ const url = new URL('../../../engines/docs/lib/screen-to-flows-index.mjs', import.meta.url);
6
+ mod = (await import(url.href));
7
+ }
8
+ return mod;
9
+ }
10
+ export async function buildScreenToFlows(docsRoot) {
11
+ const m = await load();
12
+ return m.buildScreenToFlows(docsRoot);
13
+ }
14
+ export async function linkedFlowsForScreen(docsRoot, screenId) {
15
+ const m = await load();
16
+ return m.linkedFlowsForScreen(docsRoot, screenId);
17
+ }
18
+ //# sourceMappingURL=screen-to-flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-to-flows.js","sourceRoot":"","sources":["../../../src/docs/scan/screen-to-flows.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAOlE,IAAI,GAAG,GAA4B,IAAI,CAAA;AAEvC,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3F,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAqB,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAA;IACtB,OAAO,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,QAAgB;IAC3E,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAA;IACtB,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACnD,CAAC"}
@@ -7,6 +7,7 @@ import { renderDataModelMarkdown } from './render-data-model-markdown.mjs'
7
7
  import { renderApiSummaryMarkdown } from './render-api-summary-markdown.mjs'
8
8
  import { resolveBackendSpecForBundle } from '../../spec/lib/audit-db-tables.mjs'
9
9
  import { loadDocsHubLocale } from './docs-hub-locale.mjs'
10
+ import { renderDesignMarkdown, irGeneratedDesignMarkdownPath } from './render-design-markdown.mjs'
10
11
 
11
12
  /**
12
13
  * Flatten bundle → spec shape (tests / fallback). Prefer ir/spec.yaml for site MD.
@@ -104,9 +105,27 @@ export async function writeBundleMarkdownFile(bundleFile, context = {}) {
104
105
  const specOut = await writeIrSpecMarkdownFile(specFile, irGeneratedMarkdownPath(bundleFile), context)
105
106
  await writeDataModelMarkdownFile(bundleFile)
106
107
  await writeApiMarkdownFile(bundleFile)
108
+ await writeDesignMarkdownFile(bundleFile)
107
109
  return specOut
108
110
  }
109
111
 
112
+ export async function writeDesignMarkdownFile(bundleFile) {
113
+ const designFile = designIrPathForBundle(bundleFile)
114
+ if (!existsSync(designFile)) return null
115
+ const design = parse(await readFile(designFile, 'utf8')) ?? {}
116
+ const specFile = irSpecPathForBundle(bundleFile)
117
+ const spec = existsSync(specFile) ? parse(await readFile(specFile, 'utf8')) ?? {} : {}
118
+ const markdown = renderDesignMarkdown(design, {
119
+ pageId: spec['page-id'] ?? spec.id ?? design.id,
120
+ title: spec.title ?? design.title,
121
+ })
122
+ if (!markdown) return null
123
+ const out = irGeneratedDesignMarkdownPath(bundleFile)
124
+ await mkdir(path.dirname(out), { recursive: true })
125
+ await writeFile(out, markdown, 'utf8')
126
+ return out
127
+ }
128
+
110
129
  export async function writeApiMarkdownFile(bundleFile) {
111
130
  const resolved = path.resolve(bundleFile)
112
131
  const backendPath = resolveBackendSpecForBundle(resolved, null)
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ir/generated/design.md — interaction case sequence diagrams only (from ir/design.yaml).
3
+ */
4
+ import path from 'node:path'
5
+
6
+ function stripMermaidFence(text) {
7
+ const t = String(text ?? '').trim()
8
+ const m = t.match(/^```(?:mermaid)?\s*([\s\S]*?)```$/m)
9
+ if (m) return m[1].trim()
10
+ return t
11
+ }
12
+
13
+ /**
14
+ * @param {object} design ir/design.yaml shape
15
+ * @param {{ pageId?: string, title?: string }} meta
16
+ */
17
+ export function renderDesignMarkdown(design, meta = {}) {
18
+ const items = design?.interactionCases?.items
19
+ if (!Array.isArray(items) || !items.length) return null
20
+
21
+ const lines = []
22
+ lines.push(`# Design sequences — ${meta.pageId || design.id || 'screen'}`)
23
+ lines.push('')
24
+ if (meta.title) {
25
+ lines.push(`> ${meta.title}`)
26
+ lines.push('')
27
+ }
28
+ lines.push(
29
+ '> Generated from `ir/design.yaml` (`interactionCases`). Prose: [spec.md](./spec.md#interaction-cases). Do not edit this file.',
30
+ )
31
+ lines.push('')
32
+
33
+ for (const item of items) {
34
+ const id = item?.id || 'IC-UNKNOWN'
35
+ lines.push(`## ${id} {#${id.toLowerCase()}}`)
36
+ lines.push('')
37
+ const body = stripMermaidFence(item.sequenceDiagram)
38
+ if (!body.includes('sequenceDiagram')) {
39
+ lines.push('```mermaid')
40
+ lines.push(body)
41
+ lines.push('```')
42
+ } else {
43
+ lines.push('```mermaid')
44
+ lines.push(body)
45
+ lines.push('```')
46
+ }
47
+ lines.push('')
48
+ }
49
+
50
+ return lines.join('\n')
51
+ }
52
+
53
+ export function irGeneratedDesignMarkdownPath(bundleFile) {
54
+ const dir = path.dirname(path.resolve(bundleFile))
55
+ return path.join(dir, 'ir', 'generated', 'design.md')
56
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Reverse index: W-* screen id → FLOW-* ids (from bundle userFlows + FLOW markdown traceability).
3
+ */
4
+ import fs from 'node:fs'
5
+ import path from 'node:path'
6
+
7
+ const SCREEN_ID_RE = /W-[A-Z0-9][\w-]*/gi
8
+
9
+ function addLink(map, screenId, flowId) {
10
+ const flow = normalizeFlowToken(flowId)
11
+ if (!screenId || !flow) return
12
+ if (!map.has(screenId)) map.set(screenId, new Set())
13
+ map.get(screenId).add(flow)
14
+ }
15
+
16
+ function normalizeFlowToken(raw) {
17
+ const m = raw.match(/FLOW-[A-Z0-9][\w-]*/i)
18
+ if (!m) return null
19
+ const tail = m[0].slice(5)
20
+ return `FLOW-${tail}`
21
+ }
22
+
23
+ /** Parse bullets from userFlows block text (YAML literal or list lines). */
24
+ export function parseUserFlowsText(text) {
25
+ const links = []
26
+ if (!text || !text.trim()) return links
27
+ for (const line of text.split('\n')) {
28
+ const trimmed = line.replace(/^\s*-\s*/, '').trim()
29
+ if (!/FLOW-/i.test(trimmed)) continue
30
+ const flowId = normalizeFlowToken(trimmed)
31
+ if (!flowId) continue
32
+ const screens = []
33
+ const screensPart = trimmed.match(/screens:\s*(.+)/i)?.[1] ?? trimmed
34
+ for (const sm of screensPart.match(SCREEN_ID_RE) ?? []) screens.push(sm)
35
+ links.push({ flowId, screenIds: screens })
36
+ }
37
+ return links
38
+ }
39
+
40
+ function extractUserFlowsFromBundleFile(raw) {
41
+ const block = raw.match(/^userFlows:\s*\|\s*\n([\s\S]*?)(?=^[a-zA-Z][\w.-]*:|\s*$)/m)?.[1]
42
+ if (block) return parseUserFlowsText(block)
43
+ const inline = raw.match(/^userFlows:\s*(.+)$/m)?.[1]
44
+ if (inline) return parseUserFlowsText(inline)
45
+ const listBlock = raw.match(/^userFlows:\s*\n((?:\s+-\s+.+\n?)+)/m)?.[1]
46
+ if (listBlock) return parseUserFlowsText(listBlock)
47
+ return []
48
+ }
49
+
50
+ function walkBundleFiles(docsRoot, onBundle) {
51
+ const roots = [
52
+ path.join(docsRoot, 'surfaces'),
53
+ path.join(docsRoot, 'product'),
54
+ ]
55
+ const visit = (dir) => {
56
+ if (!fs.existsSync(dir)) return
57
+ for (const ent of fs.readdirSync(dir, { withFileTypes: true })) {
58
+ if (ent.name.startsWith('.') || ent.name === 'node_modules') continue
59
+ const p = path.join(dir, ent.name)
60
+ if (ent.isDirectory()) visit(p)
61
+ else if (ent.name.endsWith('.bundle.yaml')) onBundle(p)
62
+ }
63
+ }
64
+ for (const r of roots) visit(r)
65
+ }
66
+
67
+ function walkFlowMarkdown(docsRoot, onFile) {
68
+ const catalog = path.join(docsRoot, 'architecture/03-user-flows')
69
+ if (fs.existsSync(catalog)) {
70
+ for (const n of fs.readdirSync(catalog)) {
71
+ if (n.startsWith('FLOW-') && n.endsWith('.md')) onFile(path.join(catalog, n))
72
+ }
73
+ }
74
+ const walk = (dir) => {
75
+ if (!fs.existsSync(dir)) return
76
+ for (const ent of fs.readdirSync(dir, { withFileTypes: true })) {
77
+ if (ent.name.startsWith('.') || ent.name === 'node_modules') continue
78
+ const p = path.join(dir, ent.name)
79
+ if (ent.isDirectory()) {
80
+ if (ent.name === 'user-flows' && path.basename(dir) === 'common') {
81
+ for (const n of fs.readdirSync(p)) {
82
+ if (n.startsWith('FLOW-') && n.endsWith('.md')) onFile(path.join(p, n))
83
+ }
84
+ }
85
+ walk(p)
86
+ }
87
+ }
88
+ }
89
+ walk(path.join(docsRoot, 'surfaces'))
90
+ }
91
+
92
+ /**
93
+ * @returns {Record<string, string[]>} screenToFlows sorted flow ids per W-*
94
+ */
95
+ export function buildScreenToFlows(docsRoot) {
96
+ const map = new Map()
97
+
98
+ walkBundleFiles(docsRoot, (bundlePath) => {
99
+ const raw = fs.readFileSync(bundlePath, 'utf8')
100
+ for (const { flowId, screenIds } of extractUserFlowsFromBundleFile(raw)) {
101
+ for (const sid of screenIds) addLink(map, sid, flowId)
102
+ }
103
+ })
104
+
105
+ walkFlowMarkdown(docsRoot, (flowPath) => {
106
+ const flowId = path.basename(flowPath, '.md')
107
+ const body = fs.readFileSync(flowPath, 'utf8')
108
+ for (const sid of body.match(SCREEN_ID_RE) ?? []) addLink(map, sid, flowId)
109
+ })
110
+
111
+ const out = {}
112
+ for (const [screen, flows] of map) {
113
+ out[screen] = [...flows].sort((a, b) => a.localeCompare(b))
114
+ }
115
+ return out
116
+ }
117
+
118
+ export function linkedFlowsForScreen(docsRoot, screenId, screenToFlows) {
119
+ const idx = screenToFlows ?? buildScreenToFlows(docsRoot)
120
+ return idx[screenId] ?? []
121
+ }
@@ -93,6 +93,7 @@ export function leafGeneratedNavNodes(leafDir, toHref) {
93
93
  const specMd = path.join(leafDir, 'ir', 'generated', 'spec.md')
94
94
  const dmMd = path.join(leafDir, 'ir', 'generated', 'data-model.md')
95
95
  const apiMd = path.join(leafDir, 'ir', 'generated', 'api.md')
96
+ const designMd = path.join(leafDir, 'ir', 'generated', 'design.md')
96
97
  const nodes = []
97
98
  if (existsSync(specMd)) {
98
99
  nodes.push({
@@ -112,6 +113,12 @@ export function leafGeneratedNavNodes(leafDir, toHref) {
112
113
  link: toHref(apiMd),
113
114
  })
114
115
  }
116
+ if (existsSync(designMd)) {
117
+ nodes.push({
118
+ text: 'Design sequences',
119
+ link: toHref(designMd),
120
+ })
121
+ }
115
122
  return nodes
116
123
  }
117
124
 
@@ -20,6 +20,7 @@
20
20
  import fs from 'fs';
21
21
  import path from 'path';
22
22
  import { parse } from 'yaml';
23
+ import { auditInteractionCases } from './audit-interaction-cases.mjs';
23
24
  import { auditUxAffordance } from './audit-ux-affordance.mjs';
24
25
  import { auditDbTables, resolveBackendSpecForBundle } from './audit-db-tables.mjs';
25
26
 
@@ -581,11 +582,10 @@ function auditBundleContent(rawText, filePath, pageType) {
581
582
  addWarning(
582
583
  'WARN_NO_USER_FLOWS',
583
584
  'userFlows',
584
- 'Màn có handoff / multi-screen nhưng chưa khai báo luồng người dùng (userFlows).',
585
- 'Declare userFlows: | — link FLOW-* hoặc mô tả journey ngắn.'
585
+ 'Screen has handoff / multi-screen navigation but userFlows is not declared.',
586
+ 'Declare userFlows: | — FLOW-<id> — role: … — screens: W-* (this leaf).'
586
587
  );
587
588
  }
588
-
589
589
  if (has(rawText, 'risks:')) {
590
590
  addWarning(
591
591
  'WARN_BUNDLE_RISKS_FORBIDDEN',
@@ -618,6 +618,18 @@ function auditBundleContent(rawText, filePath, pageType) {
618
618
  );
619
619
  }
620
620
 
621
+ // =========================================================================
622
+ // Interaction cases (L2) — two-step confirm + item keys
623
+ // =========================================================================
624
+
625
+ let bundleParsed = {};
626
+ try {
627
+ bundleParsed = parse(rawText) ?? {};
628
+ } catch {
629
+ /* keep empty */
630
+ }
631
+ auditInteractionCases(bundleParsed, { addGap, addConfirm, addWarning });
632
+
621
633
  // =========================================================================
622
634
  // Result
623
635
  // =========================================================================