@shanyucoder/flowgrid 0.1.5 → 0.1.9
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.
- package/README.md +1 -1
- package/adapters/laravel/registries/codegen.registry.json +9 -9
- package/bin/flowgrid.mjs +326 -115
- package/bin/lib/agent-mcp.mjs +4 -0
- package/bin/lib/agent-profiles.mjs +30 -6
- package/bin/lib/audit-run.mjs +1 -1
- package/bin/lib/cli-update.mjs +48 -8
- package/bin/lib/doctor.mjs +90 -3
- package/bin/lib/harness-overlay.mjs +12 -5
- package/bin/lib/harness-sync.mjs +17 -3
- package/bin/lib/init-adapters.mjs +75 -0
- package/bin/lib/init-scaffold.mjs +9 -0
- package/bin/lib/inject-consumer-scripts.mjs +115 -0
- package/bin/lib/merge-stack-config.mjs +89 -0
- package/bin/lib/project-gitignore.mjs +1 -0
- package/bin/lib/repo-maps-align.mjs +203 -0
- package/dist/graph/config/load-config.js +7 -2
- package/dist/graph/config/load-config.js.map +1 -1
- package/dist/graph/mcp/tools.js +1 -1
- package/dist/graph/mcp/tools.js.map +1 -1
- package/dist/graph/registry/load-registries.d.ts +1 -0
- package/dist/graph/registry/load-registries.js +14 -1
- package/dist/graph/registry/load-registries.js.map +1 -1
- package/engines/cases/render-cases.mjs +67 -5
- package/engines/docs/lib/qa-item.mjs +91 -0
- package/engines/docs/lib/render-api-summary-markdown.mjs +28 -0
- package/engines/docs/lib/render-bundle-markdown.mjs +77 -2
- package/engines/docs/lib/render-data-model-markdown.mjs +171 -0
- package/engines/docs/lib/render-design-tables.mjs +89 -7
- package/engines/docs/lib/render-qa-list.mjs +123 -25
- package/engines/docs/lib/render-template.mjs +6 -0
- package/engines/docs/render-docs.mjs +6 -2
- package/engines/docs/vitepress/config.ts +7 -7
- package/engines/docs/vitepress/surfaces-nav.mjs +45 -14
- package/engines/openapi/check-backend-spec.mjs +2 -2
- package/engines/openapi/lib/markdown-table.mjs +8 -0
- package/engines/openapi/lib/render-backend-spec-markdown.mjs +78 -0
- package/engines/registry-sync/be-capabilities-sync.mjs +118 -0
- package/engines/registry-sync/fe-design-sync.mjs +258 -0
- package/engines/registry-sync/run-registry-sync.mjs +107 -0
- package/engines/shared/e2e-output-layout.mjs +68 -0
- package/engines/shared/flowgrid-e2e-root.mjs +19 -0
- package/engines/shared/resolve-flowgrid-context.mjs +176 -0
- package/engines/spec/lib/audit-api-gaps.mjs +1 -1
- package/engines/spec/lib/audit-bundle-gaps.mjs +92 -3
- package/engines/spec/lib/audit-db-tables.mjs +529 -0
- package/engines/spec/lib/audit-e2e-coverage.mjs +88 -30
- package/engines/spec/lib/bundle-schema.mjs +4 -1
- package/engines/spec/lib/open-qa.mjs +71 -21
- package/engines/spec/split-bundle.mjs +11 -1
- package/engines/testcase/runners/generate-api.mjs +23 -23
- package/engines/testcase/runners/generate.mjs +19 -17
- package/engines/testcase/runners/lib/bootstrap-context.mjs +44 -0
- package/engines/testcase/runners/lib/write-files.mjs +37 -9
- package/harness/agents/antigravity/rules/antigravity-mcp.mdc +12 -0
- package/harness/agents/gemini/rules/gemini-mcp.mdc +11 -0
- package/harness/agents/gemini_antigravity/rules/antigravity-mcp.mdc +8 -6
- package/harness/be/skills/{grill-api → audit-api}/SKILL.md +8 -7
- package/harness/common/extracts/artifact-graph.md +2 -2
- package/harness/common/extracts/artifactgraph-phase-hooks.md +2 -2
- package/harness/common/extracts/docs-mark-detect.md +2 -2
- package/harness/common/extracts/entity-relationship.md +23 -0
- package/harness/common/rules/flowgrid-ux-common.mdc +3 -3
- package/harness/common/skills/configure-repo-maps/SKILL.md +4 -2
- package/harness/docs/extracts/agent-execution-protocol.md +3 -3
- package/harness/docs/extracts/api-codegen-readiness.md +34 -0
- package/harness/docs/extracts/api-codegen-tags.md +30 -0
- package/harness/docs/extracts/api-contract.md +43 -0
- package/harness/docs/extracts/api-spec-sync.md +35 -0
- package/harness/docs/extracts/artifactgraph-hooks-docs.md +1 -1
- package/harness/docs/extracts/call-external.md +16 -0
- package/harness/docs/extracts/common-scope.md +9 -10
- package/harness/docs/extracts/db-audit-wizard.md +45 -0
- package/harness/docs/extracts/derived-data.md +18 -0
- package/harness/docs/extracts/design-leaf-signoff.md +16 -0
- package/harness/docs/extracts/extract-registry.docs.json +11 -2
- package/harness/docs/extracts/qa-inbox.md +19 -10
- package/harness/docs/extracts/qa-team.md +32 -0
- package/harness/docs/extracts/spec-core.md +7 -3
- package/harness/docs/extracts/spec-evolution.md +21 -0
- package/harness/docs/extracts/spec-prd-lite.md +19 -0
- package/harness/docs/extracts/spec-requirement.md +6 -2
- package/harness/docs/extracts/spec-ssot-prep.md +25 -0
- package/harness/docs/extracts/tpl-module.md +12 -0
- package/harness/docs/extracts/verify-gate.md +33 -0
- package/harness/docs/extracts/wire-spec-feedback.md +31 -0
- package/harness/docs/rules/agent-compliance.mdc +1 -1
- package/harness/docs/rules/team-flow-spec.mdc +3 -4
- package/harness/docs/schemas/flowgrid-docs/qa-item.schema.json +65 -0
- package/harness/docs/skills/adopt/SKILL.md +2 -0
- package/harness/docs/skills/api/SKILL.md +4 -5
- package/harness/docs/skills/api-spec/SKILL.md +19 -6
- package/harness/docs/skills/api-update/SKILL.md +4 -4
- package/harness/docs/skills/architecture/SKILL.md +1 -1
- package/harness/docs/skills/business-process/SKILL.md +2 -0
- package/harness/docs/skills/common/SKILL.md +2 -2
- package/harness/docs/skills/common-spec/SKILL.md +10 -47
- package/harness/docs/skills/db-erd/SKILL.md +26 -0
- package/harness/docs/skills/grill/SKILL.md +28 -22
- package/harness/docs/skills/grill-api/SKILL.md +4 -6
- package/harness/docs/skills/grill-api-spec/SKILL.md +44 -24
- package/harness/docs/skills/grill-bqa/SKILL.md +28 -13
- package/harness/docs/skills/grill-common-spec/SKILL.md +10 -35
- package/harness/docs/skills/grill-dev/SKILL.md +8 -7
- package/harness/docs/skills/grill-docs/SKILL.md +11 -4
- package/harness/docs/skills/module/SKILL.md +3 -1
- package/harness/docs/skills/openapi/SKILL.md +2 -1
- package/harness/docs/skills/overview/SKILL.md +7 -1
- package/harness/docs/skills/qa-resolve/SKILL.md +13 -12
- package/harness/docs/skills/qa-review/SKILL.md +45 -0
- package/harness/docs/skills/spec/SKILL.md +43 -10
- package/harness/docs/skills/update-spec/SKILL.md +5 -2
- package/harness/fe/extracts/wire-audit-loop.md +72 -0
- package/harness/fe/extracts/wire-phase.md +45 -0
- package/harness/fe/rules/platform-design-vocabulary.mdc +1 -1
- package/harness/fe/rules/team-flow-prototype.mdc +8 -4
- package/harness/fe/skills/gen-common/SKILL.md +11 -84
- package/harness/fe/skills/grill-prototype/SKILL.md +51 -25
- package/harness/fe/skills/grill-test/SKILL.md +78 -20
- package/harness/fe/skills/grill-wire/SKILL.md +81 -0
- package/harness/fe/skills/prototype/SKILL.md +3 -2
- package/harness/fe/skills/wire/SKILL.md +8 -3
- package/harness/shared/AGENTS.md +3 -3
- package/harness/shared/SSOT_AGENT_PROTOCOL.md +3 -3
- package/harness/tests/extracts/grill-api-hook.md +69 -0
- package/harness/tests/extracts/grill-scenario-flow.md +39 -0
- package/harness/tests/extracts/grill-screen-tc.md +40 -0
- package/harness/tests/extracts/testcase-gen-cli.md +57 -0
- package/harness/tests/extracts/testcase-plan.md +29 -0
- package/harness/tests/extracts/tests-verify-gate.md +29 -0
- package/harness/tests/extracts/wire-test-handoff.md +37 -0
- package/harness/tests/skills/grill-testcase/SKILL.md +1 -0
- package/harness/tests/skills/test-api/SKILL.md +14 -6
- package/harness/tests/skills/testcase/SKILL.md +3 -1
- package/harness/tests/templates/TC.example-api.yaml +7 -1
- package/harness/tests/templates/TC.example.yaml +4 -1
- package/harness/tests/templates/tpl-testcase-plan.md +75 -0
- package/package.json +1 -1
- package/stacks/fastapi.json +1 -0
- package/stacks/laravel.json +1 -0
- package/stacks/nestjs.json +72 -0
- package/stacks/nextjs-nest.json +1 -0
- package/stacks/nuxt4-nest.json +1 -0
- package/templates/project-skeleton/architecture/03-business-process/FLOW-template.md +2 -0
- package/templates/project-skeleton/overview/index.md +68 -2
- package/templates/project-skeleton/overview/operational-areas/_template.md +37 -0
- package/templates/project-skeleton/qa/README.md +4 -8
- package/templates/project-skeleton/surfaces/common/data-model/index.md +10 -2
- package/templates/schemas/qa-item.schema.json +98 -0
- package/templates/shared/api-03-mock.stub.yaml +14 -0
- package/templates/shared/backend-api.bundle.yaml +3 -0
- package/templates/shared/backend-api.yaml +4 -0
- package/templates/shared/be-capabilities.registry.base.json +8 -0
- package/templates/shared/bundle-authoring.md +44 -7
- package/templates/shared/default-layout.ejs +131 -18
- package/templates/shared/design-spec.yaml +2 -3
- package/templates/shared/design.registry.base.json +38 -0
- package/templates/shared/feature.bundle.yaml +16 -9
- package/templates/shared/ir/generated/spec.md +281 -0
- package/templates/shared/ir-spec.yaml +1 -1
- package/templates/shared/qa-authoring.md +78 -0
- package/templates/shared/qa-item.yaml +35 -14
- package/templates/shared/tpl-api-contract.md +133 -0
- package/templates/shared/tpl-screen-data-model.md +76 -0
- package/templates/tests-skeleton/cases/README.md +4 -0
- package/templates/tests-skeleton/catalog/locale.yaml +9 -0
- package/templates/tests-skeleton/tpl-testcase-plan.md +9 -0
- package/harness/docs/skills/api-integration/SKILL.md +0 -110
- package/harness/docs/skills/grill-integration-spec/SKILL.md +0 -51
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Map init adapters → stacks/*.json preset key.
|
|
6
|
+
* @param {object} opts
|
|
7
|
+
* @param {string} opts.type
|
|
8
|
+
* @param {string} [opts.feAdapter]
|
|
9
|
+
* @param {string} [opts.beAdapter]
|
|
10
|
+
*/
|
|
11
|
+
export function resolveStackPresetKey({ type, feAdapter, beAdapter }) {
|
|
12
|
+
if (type === 'Document') return 'docs';
|
|
13
|
+
if (type === 'Test') return 'generic';
|
|
14
|
+
const fe = feAdapter || '';
|
|
15
|
+
const be = beAdapter || '';
|
|
16
|
+
if (fe === 'nuxt4' && be === 'nestjs') return 'nuxt4-nest';
|
|
17
|
+
if (fe === 'nextjs' && be === 'nestjs') return 'nextjs-nest';
|
|
18
|
+
if (fe === 'nuxt4') return 'nuxt4';
|
|
19
|
+
if (fe === 'nextjs') return 'nextjs';
|
|
20
|
+
if (fe === 'dotnet-line') return 'dotnet-line';
|
|
21
|
+
if (be === 'nestjs') return 'nestjs';
|
|
22
|
+
if (be === 'fastapi') return 'fastapi';
|
|
23
|
+
if (be === 'laravel') return 'laravel';
|
|
24
|
+
if (be === 'dotnet-integration') return 'dotnet-integration';
|
|
25
|
+
return 'generic';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @param {string} packageRoot
|
|
30
|
+
* @param {string} stackKey
|
|
31
|
+
*/
|
|
32
|
+
export function loadStackPresetJson(packageRoot, stackKey) {
|
|
33
|
+
const file = path.join(packageRoot, 'stacks', `${stackKey}.json`);
|
|
34
|
+
if (!fs.existsSync(file)) {
|
|
35
|
+
const generic = path.join(packageRoot, 'stacks', 'generic.json');
|
|
36
|
+
if (fs.existsSync(generic)) {
|
|
37
|
+
return JSON.parse(fs.readFileSync(generic, 'utf8'));
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const STACK_FIELDS = [
|
|
45
|
+
'version',
|
|
46
|
+
'stack',
|
|
47
|
+
'mode',
|
|
48
|
+
'commands',
|
|
49
|
+
'registries',
|
|
50
|
+
'gapSources',
|
|
51
|
+
'specRoots',
|
|
52
|
+
'vocabularies',
|
|
53
|
+
'dsl',
|
|
54
|
+
'templates',
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Merge ArtifactGraph / codegen allowlist from stacks/*.json into flowgrid config.
|
|
59
|
+
* Preserves init fields (type, agents, frontend, backend, …).
|
|
60
|
+
*
|
|
61
|
+
* @param {object} projectConfig
|
|
62
|
+
* @param {object} stackPreset
|
|
63
|
+
* @param {string} projectRoot
|
|
64
|
+
*/
|
|
65
|
+
export function mergeStackIntoFlowgridConfig(projectConfig, stackPreset, projectRoot) {
|
|
66
|
+
if (!stackPreset) return projectConfig;
|
|
67
|
+
for (const key of STACK_FIELDS) {
|
|
68
|
+
if (stackPreset[key] !== undefined) {
|
|
69
|
+
projectConfig[key] = stackPreset[key];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
projectConfig.projectId = path.basename(projectRoot);
|
|
73
|
+
if (stackPreset.stack) {
|
|
74
|
+
projectConfig.stack = stackPreset.stack;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const hasTestsHub =
|
|
78
|
+
Boolean(projectConfig.frontend?.testsRoot) || Boolean(projectConfig.backend?.testsRoot);
|
|
79
|
+
if (hasTestsHub) {
|
|
80
|
+
const e2eReg = 'registries/e2e-test.registry.json';
|
|
81
|
+
const list = Array.isArray(projectConfig.registries) ? [...projectConfig.registries] : [];
|
|
82
|
+
if (!list.includes(e2eReg)) {
|
|
83
|
+
list.push(e2eReg);
|
|
84
|
+
projectConfig.registries = list;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return projectConfig;
|
|
89
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
|
|
4
|
+
import { loadFlowgridConfig } from '../../engines/shared/resolve-flowgrid-context.mjs';
|
|
5
|
+
|
|
6
|
+
const LOCAL_FILE = 'platform-repos.local.json';
|
|
7
|
+
|
|
8
|
+
/** Hub keys in platform-repos.local.json ↔ .flowgrid/config.json */
|
|
9
|
+
const HUB_KEYS = [
|
|
10
|
+
{ mapKey: 'docs', configPath: ['frontend', 'docsRoot'], configPathBe: ['backend', 'docsRoot'] },
|
|
11
|
+
{ mapKey: 'tests', configPath: ['frontend', 'testsRoot'], configPathBe: ['backend', 'testsRoot'] },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
function readJson(file) {
|
|
15
|
+
if (!fs.existsSync(file)) return null;
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function getConfigHubRel(config, hubKey) {
|
|
24
|
+
const def = HUB_KEYS.find((h) => h.mapKey === hubKey);
|
|
25
|
+
if (!def || !config) return null;
|
|
26
|
+
const fe = config.frontend?.[def.configPath[1]];
|
|
27
|
+
const be = config.backend?.[def.configPathBe[1]];
|
|
28
|
+
return fe || be || null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function resolveConfigLane(config) {
|
|
32
|
+
if (config.frontend?.adapter || config.frontend?.docsRoot || config.frontend?.testsRoot) {
|
|
33
|
+
return 'frontend';
|
|
34
|
+
}
|
|
35
|
+
if (config.backend) return 'backend';
|
|
36
|
+
return 'frontend';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function setConfigHubRel(config, hubKey, rel) {
|
|
40
|
+
const lane = resolveConfigLane(config);
|
|
41
|
+
if (!config[lane]) config[lane] = {};
|
|
42
|
+
if (hubKey === 'docs') config[lane].docsRoot = rel;
|
|
43
|
+
if (hubKey === 'tests') config[lane].testsRoot = rel;
|
|
44
|
+
return config;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function normalizePath(p) {
|
|
48
|
+
if (!p) return null;
|
|
49
|
+
return path.resolve(p);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function pathsEqual(a, b) {
|
|
53
|
+
if (!a || !b) return false;
|
|
54
|
+
return normalizePath(a) === normalizePath(b);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @param {string} projectRoot
|
|
59
|
+
*/
|
|
60
|
+
export function loadRepoMapsLocal(projectRoot) {
|
|
61
|
+
const file = path.join(projectRoot, LOCAL_FILE);
|
|
62
|
+
const doc = readJson(file);
|
|
63
|
+
return { file, doc: doc ?? { projects: {} } };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Expected absolute paths from init config (single-repo checkout).
|
|
68
|
+
* @param {string} projectRoot
|
|
69
|
+
* @param {object | null} config
|
|
70
|
+
*/
|
|
71
|
+
export function expectedHubPathsFromConfig(projectRoot, config) {
|
|
72
|
+
const root = path.resolve(projectRoot);
|
|
73
|
+
const out = {};
|
|
74
|
+
for (const { mapKey } of HUB_KEYS) {
|
|
75
|
+
const rel = getConfigHubRel(config, mapKey);
|
|
76
|
+
if (rel) out[mapKey] = path.resolve(root, rel);
|
|
77
|
+
}
|
|
78
|
+
if (config?.type === 'Frontend' || config?.type === 'Fullstack') {
|
|
79
|
+
out.fe = root;
|
|
80
|
+
}
|
|
81
|
+
if (config?.type === 'Backend' || config?.type === 'Fullstack') {
|
|
82
|
+
out.be = root;
|
|
83
|
+
}
|
|
84
|
+
if (config?.type === 'Document') {
|
|
85
|
+
out.docs = root;
|
|
86
|
+
}
|
|
87
|
+
if (config?.type === 'Test') {
|
|
88
|
+
out.tests = root;
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @param {string} projectRoot
|
|
95
|
+
* @returns {{ conflicts: Array<{ key: string; configPath: string | null; mapPath: string | null }>; missingInMap: string[]; missingInConfig: string[] }}
|
|
96
|
+
*/
|
|
97
|
+
export function compareConfigAndRepoMaps(projectRoot) {
|
|
98
|
+
const config = loadFlowgridConfig(projectRoot);
|
|
99
|
+
const { doc } = loadRepoMapsLocal(projectRoot);
|
|
100
|
+
const expected = expectedHubPathsFromConfig(projectRoot, config);
|
|
101
|
+
const projects = doc.projects ?? {};
|
|
102
|
+
|
|
103
|
+
const conflicts = [];
|
|
104
|
+
const missingInMap = [];
|
|
105
|
+
const missingInConfig = [];
|
|
106
|
+
|
|
107
|
+
for (const [key, configAbs] of Object.entries(expected)) {
|
|
108
|
+
const mapRoot = projects[key]?.root;
|
|
109
|
+
if (!mapRoot) {
|
|
110
|
+
missingInMap.push(key);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const mapAbs = normalizePath(mapRoot.startsWith('~') ? mapRoot : path.resolve(projectRoot, mapRoot));
|
|
114
|
+
if (!pathsEqual(configAbs, mapAbs)) {
|
|
115
|
+
conflicts.push({
|
|
116
|
+
key,
|
|
117
|
+
configPath: configAbs,
|
|
118
|
+
mapPath: mapAbs,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
for (const key of Object.keys(projects)) {
|
|
124
|
+
if (!expected[key] && (key === 'docs' || key === 'tests')) {
|
|
125
|
+
missingInConfig.push(key);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return { conflicts, missingInMap, missingInConfig, config, expected, projects };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Write platform-repos.local.json from .flowgrid/config.json pointers.
|
|
134
|
+
* @param {string} projectRoot
|
|
135
|
+
*/
|
|
136
|
+
export function writeRepoMapsFromConfig(projectRoot) {
|
|
137
|
+
const config = loadFlowgridConfig(projectRoot);
|
|
138
|
+
if (!config) throw new Error('Missing .flowgrid/config.json — run flowgrid init first');
|
|
139
|
+
const expected = expectedHubPathsFromConfig(projectRoot, config);
|
|
140
|
+
const { file, doc } = loadRepoMapsLocal(projectRoot);
|
|
141
|
+
doc.projects = doc.projects ?? {};
|
|
142
|
+
for (const [key, abs] of Object.entries(expected)) {
|
|
143
|
+
doc.projects[key] = { ...(doc.projects[key] ?? {}), root: abs };
|
|
144
|
+
}
|
|
145
|
+
fs.writeFileSync(file, JSON.stringify(doc, null, 2) + '\n');
|
|
146
|
+
return { file, doc };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Update config.json hub relative paths from platform-repos.local.json (docs/tests only).
|
|
151
|
+
* @param {string} projectRoot
|
|
152
|
+
*/
|
|
153
|
+
export function writeConfigFromRepoMaps(projectRoot) {
|
|
154
|
+
const config = loadFlowgridConfig(projectRoot);
|
|
155
|
+
if (!config) throw new Error('Missing .flowgrid/config.json');
|
|
156
|
+
const { doc } = loadRepoMapsLocal(projectRoot);
|
|
157
|
+
const root = path.resolve(projectRoot);
|
|
158
|
+
const projects = doc.projects ?? {};
|
|
159
|
+
const next = { ...config };
|
|
160
|
+
|
|
161
|
+
for (const { mapKey } of HUB_KEYS) {
|
|
162
|
+
const mapRoot = projects[mapKey]?.root;
|
|
163
|
+
if (!mapRoot) continue;
|
|
164
|
+
const abs = normalizePath(path.isAbsolute(mapRoot) ? mapRoot : path.join(root, mapRoot));
|
|
165
|
+
const rel = path.relative(root, abs).split(path.sep).join('/');
|
|
166
|
+
setConfigHubRel(next, mapKey, rel || '.');
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const configPath = path.join(root, '.flowgrid', 'config.json');
|
|
170
|
+
fs.writeFileSync(configPath, JSON.stringify(next, null, 2) + '\n');
|
|
171
|
+
return next;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* @param {string} projectRoot
|
|
176
|
+
* @param {Record<string, 'config' | 'map'>} choices
|
|
177
|
+
*/
|
|
178
|
+
export function applyAlignChoices(projectRoot, choices) {
|
|
179
|
+
const root = path.resolve(projectRoot);
|
|
180
|
+
let config = loadFlowgridConfig(root);
|
|
181
|
+
if (!config) throw new Error('Missing .flowgrid/config.json');
|
|
182
|
+
const { file, doc } = loadRepoMapsLocal(root);
|
|
183
|
+
doc.projects = doc.projects ?? {};
|
|
184
|
+
|
|
185
|
+
for (const [key, pick] of Object.entries(choices)) {
|
|
186
|
+
const cmp = compareConfigAndRepoMaps(root);
|
|
187
|
+
const conflict = cmp.conflicts.find((c) => c.key === key);
|
|
188
|
+
if (!conflict) continue;
|
|
189
|
+
if (pick === 'config') {
|
|
190
|
+
doc.projects[key] = { ...(doc.projects[key] ?? {}), root: conflict.configPath };
|
|
191
|
+
} else {
|
|
192
|
+
const rel = path.relative(root, conflict.mapPath).split(path.sep).join('/');
|
|
193
|
+
if (key === 'docs' || key === 'tests') {
|
|
194
|
+
setConfigHubRel(config, key, rel || '.');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
fs.writeFileSync(file, JSON.stringify(doc, null, 2) + '\n');
|
|
200
|
+
const configPath = path.join(root, '.flowgrid', 'config.json');
|
|
201
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
202
|
+
return { config, doc };
|
|
203
|
+
}
|
|
@@ -45,7 +45,12 @@ export function defaultRepoConfig(projectId = path.basename(process.cwd())) {
|
|
|
45
45
|
mode: 'brownfield',
|
|
46
46
|
projectId,
|
|
47
47
|
commands: {},
|
|
48
|
-
registries: [
|
|
48
|
+
registries: [
|
|
49
|
+
'registries/design.registry.json',
|
|
50
|
+
'registries/common.registry.json',
|
|
51
|
+
'registries/unit-test.registry.json',
|
|
52
|
+
'registries/e2e-test.registry.json',
|
|
53
|
+
],
|
|
49
54
|
gapSources: [],
|
|
50
55
|
specRoots: ['artifactgraph/specs'],
|
|
51
56
|
vocabularies: {
|
|
@@ -72,7 +77,7 @@ export function loadEffectiveRepoConfig(repoRoot) {
|
|
|
72
77
|
export function requireRepoConfig(repoRoot) {
|
|
73
78
|
const cfg = loadRepoConfig(repoRoot);
|
|
74
79
|
if (!cfg) {
|
|
75
|
-
throw new Error(`Missing ${CONFIG_NAME} in ${repoRoot}. Run:
|
|
80
|
+
throw new Error(`Missing ${CONFIG_NAME} in ${repoRoot}. Run: flowgrid init`);
|
|
76
81
|
}
|
|
77
82
|
return cfg;
|
|
78
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../src/graph/config/load-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAA;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAA;AAEpC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrE,QAAQ,EAAE;IACb,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC;SACD,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SAChD,QAAQ,EAAE;IACb,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAA;AAEF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAwB,CAAA;AACtE,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAC/B,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAExC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,YAAY;QAClB,SAAS;QACT,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../src/graph/config/load-config.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/mcp/tools.js
CHANGED
|
@@ -39,7 +39,7 @@ export function registerTools(server) {
|
|
|
39
39
|
/** Show the current repository used by this MCP process. */
|
|
40
40
|
server.tool('artifactgraph_projects', 'Show the current repository (legacy compatibility; product tools use cwd directly)', {}, async () => text({ projects: [currentProject()] }));
|
|
41
41
|
/** Rebuild SQLite index from registries on disk (SSOT = product git; MCP = index only). */
|
|
42
|
-
server.tool('artifactgraph_rebuild', 'Rebuild .
|
|
42
|
+
server.tool('artifactgraph_rebuild', 'Rebuild .flowgrid/index.db from product registries/*.json (git SSOT; lexicon backup under artifactgraph/lexicon/)', {}, async () => {
|
|
43
43
|
const project = currentProject();
|
|
44
44
|
const cfg = loadEffectiveRepoConfig(project.root);
|
|
45
45
|
const store = new IndexStore(project.root);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/graph/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/graph/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export interface LoadedRegistries {
|
|
|
10
10
|
byFile: Record<string, unknown>;
|
|
11
11
|
/** Flattened design shells / common ids for matching. */
|
|
12
12
|
designShells: string[];
|
|
13
|
+
composableExports: string[];
|
|
13
14
|
commonIds: string[];
|
|
14
15
|
unitPatterns: string[];
|
|
15
16
|
e2eBundles: string[];
|
|
@@ -10,6 +10,7 @@ import { indexApiRoutes } from '../analyze/api-routes.js';
|
|
|
10
10
|
export function loadRegistries(repoRoot, cfg) {
|
|
11
11
|
const byFile = {};
|
|
12
12
|
const designShells = [];
|
|
13
|
+
const composableExports = [];
|
|
13
14
|
const commonIds = [];
|
|
14
15
|
const unitPatterns = [];
|
|
15
16
|
const e2eBundles = [];
|
|
@@ -35,6 +36,13 @@ export function loadRegistries(repoRoot, cfg) {
|
|
|
35
36
|
for (const [k, v] of Object.entries(aliasIndex)) {
|
|
36
37
|
aliasToCanonical[k.toLowerCase()] = v;
|
|
37
38
|
}
|
|
39
|
+
const composables = (data.composables ?? {});
|
|
40
|
+
composableExports.push(...Object.keys(composables));
|
|
41
|
+
for (const [id, row] of Object.entries(composables)) {
|
|
42
|
+
const exp = row.export ?? id;
|
|
43
|
+
aliasToCanonical[exp.toLowerCase()] = exp;
|
|
44
|
+
aliasToCanonical[id.toLowerCase()] = id;
|
|
45
|
+
}
|
|
38
46
|
}
|
|
39
47
|
if (base.includes('common')) {
|
|
40
48
|
const entries = (data.entries ?? {});
|
|
@@ -53,13 +61,14 @@ export function loadRegistries(repoRoot, cfg) {
|
|
|
53
61
|
Object.assign(codeIds, ids);
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
|
-
return { byFile, designShells, commonIds, unitPatterns, e2eBundles, aliasToCanonical, codeIds };
|
|
64
|
+
return { byFile, designShells, composableExports, commonIds, unitPatterns, e2eBundles, aliasToCanonical, codeIds };
|
|
57
65
|
}
|
|
58
66
|
/** Counts returned to MCP status / rebuild (DSL index summary). */
|
|
59
67
|
export function registryIndexSummary(loaded, apiRoutesCount) {
|
|
60
68
|
return {
|
|
61
69
|
files: Object.keys(loaded.byFile).length,
|
|
62
70
|
designShells: loaded.designShells.length,
|
|
71
|
+
composables: loaded.composableExports.length,
|
|
63
72
|
commonIds: loaded.commonIds.length,
|
|
64
73
|
unitPatterns: loaded.unitPatterns.length,
|
|
65
74
|
e2eBundles: loaded.e2eBundles.length,
|
|
@@ -81,6 +90,10 @@ export function indexRegistries(store, loaded, repoRoot, cfg) {
|
|
|
81
90
|
for (const id of loaded.designShells) {
|
|
82
91
|
store.upsertRegistryEntry('design.shells', id, { id });
|
|
83
92
|
}
|
|
93
|
+
store.clearRegistry('design.composables');
|
|
94
|
+
for (const id of loaded.composableExports) {
|
|
95
|
+
store.upsertRegistryEntry('design.composables', id, { id });
|
|
96
|
+
}
|
|
84
97
|
store.clearRegistry('common.entries');
|
|
85
98
|
for (const id of loaded.commonIds) {
|
|
86
99
|
store.upsertRegistryEntry('common.entries', id, { id });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-registries.js","sourceRoot":"","sources":["../../../src/graph/registry/load-registries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"load-registries.js","sourceRoot":"","sources":["../../../src/graph/registry/load-registries.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ async function main() {
|
|
|
56
56
|
console.log(`cases:render: OK (${n} file(s))`)
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
function renderCaseMarkdown(tc, { h }) {
|
|
59
|
+
export function renderCaseMarkdown(tc, { h }) {
|
|
60
60
|
const shortTitle = tc.title || tc.name || tc.summary || 'case'
|
|
61
61
|
const title = tc.id ? `${tc.id}: ${shortTitle}` : shortTitle
|
|
62
62
|
const story = tc.story?.trim()
|
|
@@ -89,6 +89,10 @@ function renderCaseMarkdown(tc, { h }) {
|
|
|
89
89
|
'',
|
|
90
90
|
bullets(Array.isArray(tc.expected) ? tc.expected : tc.expected ? [tc.expected] : []),
|
|
91
91
|
'',
|
|
92
|
+
traceabilitySection(tc, h),
|
|
93
|
+
testMatrixSection(tc, h),
|
|
94
|
+
docsCrossRefSection(tc, h),
|
|
95
|
+
'',
|
|
92
96
|
'<details>',
|
|
93
97
|
`<summary>${h.technical || 'Technical details'}</summary>`,
|
|
94
98
|
'',
|
|
@@ -116,11 +120,67 @@ function renderCaseMarkdown(tc, { h }) {
|
|
|
116
120
|
return member.filter((x) => x !== null).join('\n')
|
|
117
121
|
}
|
|
118
122
|
|
|
123
|
+
function traceabilitySection(tc, h) {
|
|
124
|
+
const tr = tc.traceability
|
|
125
|
+
if (!tr || typeof tr !== 'object') return ''
|
|
126
|
+
const lines = [
|
|
127
|
+
`## ${h.traceability || 'Traceability (docs SSOT)'}`,
|
|
128
|
+
'',
|
|
129
|
+
tr.bundleScreen ? `- **Screen:** \`${tr.bundleScreen}\`` : null,
|
|
130
|
+
tr.bundleScenarios?.length
|
|
131
|
+
? `- **Scenarios:** ${tr.bundleScenarios.map((s) => `\`${s}\``).join(', ')}`
|
|
132
|
+
: null,
|
|
133
|
+
tr.acceptanceRefs?.length
|
|
134
|
+
? `- **Acceptance:** ${tr.acceptanceRefs.map((s) => `\`${s}\``).join(', ')}`
|
|
135
|
+
: null,
|
|
136
|
+
tr.actionRefs?.length
|
|
137
|
+
? `- **Actions:** ${tr.actionRefs.map((s) => `\`${s}\``).join(', ')}`
|
|
138
|
+
: null,
|
|
139
|
+
'',
|
|
140
|
+
].filter((x) => x !== null)
|
|
141
|
+
if (lines.length <= 2) return ''
|
|
142
|
+
return lines.join('\n')
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function testMatrixSection(tc, h) {
|
|
146
|
+
const matrix = Array.isArray(tc.testMatrix) ? tc.testMatrix : []
|
|
147
|
+
if (!matrix.length) return ''
|
|
148
|
+
const rows = matrix.map((row) => {
|
|
149
|
+
const id = row.caseId ?? '—'
|
|
150
|
+
const facet = row.facet ?? '—'
|
|
151
|
+
const desc = (row.description ?? '').replace(/\|/g, '\\|')
|
|
152
|
+
return `| ${id} | \`${facet}\` | ${desc} |`
|
|
153
|
+
})
|
|
154
|
+
return [
|
|
155
|
+
`## ${h.testMatrix || 'Ma trận kiểm thử (equivalence)'}`,
|
|
156
|
+
'',
|
|
157
|
+
'| Case | Facet | Mô tả |',
|
|
158
|
+
'| --- | --- | --- |',
|
|
159
|
+
...rows,
|
|
160
|
+
'',
|
|
161
|
+
].join('\n')
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function docsCrossRefSection(tc, h) {
|
|
165
|
+
const screen = tc.refs?.screen || tc.traceability?.bundleScreen
|
|
166
|
+
if (!screen) return ''
|
|
167
|
+
return [
|
|
168
|
+
`## ${h.crossRefDocs || 'Đối chiếu docs hub'}`,
|
|
169
|
+
'',
|
|
170
|
+
`- **Function:** \`${screen}\` — đọc cùng VitePress docs hub: \`ir/generated/spec.md\` (nghiệp vụ) và bundle \`*.bundle.yaml\` (SSOT grill).`,
|
|
171
|
+
tc.refs?.scenario ? `- **Scenario:** \`${tc.refs.scenario}\`` : null,
|
|
172
|
+
'',
|
|
173
|
+
]
|
|
174
|
+
.filter((x) => x !== null)
|
|
175
|
+
.join('\n')
|
|
176
|
+
}
|
|
177
|
+
|
|
119
178
|
function stepsNarrative(tc) {
|
|
120
179
|
const steps = tc.steps || []
|
|
121
180
|
if (!steps.length) return MD_NONE
|
|
122
181
|
return steps
|
|
123
182
|
.map((step, i) => {
|
|
183
|
+
if (typeof step === 'string') return `${i + 1}. ${step}`
|
|
124
184
|
if (step.as || step.label) return `${i + 1}. ${step.as || step.label}`
|
|
125
185
|
if (step.action === 'goto') return `${i + 1}. Mở trang \`${step.path ?? ''}\``
|
|
126
186
|
if (step.action === 'fill') return `${i + 1}. Nhập vào \`${step.testId ?? 'field'}\``
|
|
@@ -176,7 +236,9 @@ async function listEntries(dir) {
|
|
|
176
236
|
}
|
|
177
237
|
}
|
|
178
238
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
239
|
+
if (process.argv[1] && process.argv[1].endsWith('render-cases.mjs')) {
|
|
240
|
+
main().catch((e) => {
|
|
241
|
+
console.error(e)
|
|
242
|
+
process.exit(1)
|
|
243
|
+
})
|
|
244
|
+
}
|