mcp-probe-kit 3.2.0 → 3.6.0
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 +25 -7
- package/build/index.js +45 -79
- package/build/lib/__tests__/agents-md-template.unit.test.js +1 -0
- package/build/lib/__tests__/dev-workflow.unit.test.js +22 -0
- package/build/lib/__tests__/handles.unit.test.js +19 -0
- package/build/lib/__tests__/mcp-apps.unit.test.d.ts +1 -0
- package/build/lib/__tests__/mcp-apps.unit.test.js +52 -0
- package/build/lib/__tests__/mcp-tool-skill-registry.unit.test.d.ts +1 -0
- package/build/lib/__tests__/mcp-tool-skill-registry.unit.test.js +18 -0
- package/build/lib/__tests__/memory-client.unit.test.js +105 -0
- package/build/lib/__tests__/memory-orchestration.unit.test.d.ts +1 -0
- package/build/lib/__tests__/memory-orchestration.unit.test.js +88 -0
- package/build/lib/__tests__/memory-payload.unit.test.d.ts +1 -0
- package/build/lib/__tests__/memory-payload.unit.test.js +35 -0
- package/build/lib/__tests__/quality-constraints.unit.test.d.ts +1 -0
- package/build/lib/__tests__/quality-constraints.unit.test.js +54 -0
- package/build/lib/__tests__/spec-gate.unit.test.d.ts +1 -0
- package/build/lib/__tests__/spec-gate.unit.test.js +54 -0
- package/build/lib/__tests__/spec-validator.unit.test.js +106 -74
- package/build/lib/__tests__/task-defaults.unit.test.d.ts +1 -0
- package/build/lib/__tests__/task-defaults.unit.test.js +27 -0
- package/build/lib/__tests__/workflow-skill-installer.unit.test.d.ts +1 -0
- package/build/lib/__tests__/workflow-skill-installer.unit.test.js +110 -0
- package/build/lib/agents-md-template.js +40 -32
- package/build/lib/cursor-history-client.d.ts +54 -0
- package/build/lib/cursor-history-client.js +240 -0
- package/build/lib/dev-workflow.d.ts +36 -0
- package/build/lib/dev-workflow.js +497 -0
- package/build/lib/handles.d.ts +31 -0
- package/build/lib/handles.js +36 -0
- package/build/lib/mcp-apps.d.ts +14 -0
- package/build/lib/mcp-apps.js +234 -0
- package/build/lib/mcp-tool-skill-registry.d.ts +46 -0
- package/build/lib/mcp-tool-skill-registry.js +256 -0
- package/build/lib/memory-client.d.ts +19 -0
- package/build/lib/memory-client.js +69 -0
- package/build/lib/memory-orchestration.d.ts +5 -0
- package/build/lib/memory-orchestration.js +20 -0
- package/build/lib/merge-agents-md.d.ts +2 -2
- package/build/lib/merge-agents-md.js +7 -4
- package/build/lib/output-schema-registry.d.ts +11 -0
- package/build/lib/output-schema-registry.js +80 -0
- package/build/lib/quality-constraints.d.ts +54 -0
- package/build/lib/quality-constraints.js +155 -0
- package/build/lib/skill-bridge.js +12 -12
- package/build/lib/spec-gate.d.ts +32 -0
- package/build/lib/spec-gate.js +83 -0
- package/build/lib/spec-validator.js +16 -3
- package/build/lib/task-defaults.d.ts +6 -0
- package/build/lib/task-defaults.js +20 -0
- package/build/lib/template-loader.js +83 -23
- package/build/lib/tool-annotations.js +3 -0
- package/build/lib/toolset-manager.js +2 -0
- package/build/lib/workflow-skill-installer.d.ts +38 -0
- package/build/lib/workflow-skill-installer.js +158 -0
- package/build/lib/workflow-skill-template.d.ts +9 -0
- package/build/lib/workflow-skill-template.js +85 -0
- package/build/lib/workflow-skill-version.d.ts +15 -0
- package/build/lib/workflow-skill-version.js +68 -0
- package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
- package/build/resources/ui-ux-data/metadata.json +30 -30
- package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
- package/build/resources/ui-ux-data/shadcn/components.json +997 -997
- package/build/resources/ui-ux-data/themes/presets.json +483 -483
- package/build/schemas/index.d.ts +110 -0
- package/build/schemas/index.js +1 -0
- package/build/schemas/memory-tools.d.ts +83 -0
- package/build/schemas/memory-tools.js +43 -0
- package/build/schemas/orchestration-tools.d.ts +8 -0
- package/build/schemas/orchestration-tools.js +8 -0
- package/build/schemas/output/code-insight-tools.d.ts +65 -0
- package/build/schemas/output/code-insight-tools.js +42 -0
- package/build/schemas/output/memory-tools.d.ts +576 -0
- package/build/schemas/output/memory-tools.js +148 -0
- package/build/schemas/project-tools.d.ts +19 -0
- package/build/schemas/project-tools.js +20 -0
- package/build/tools/__tests__/cursor-history.unit.test.d.ts +1 -0
- package/build/tools/__tests__/cursor-history.unit.test.js +38 -0
- package/build/tools/__tests__/delete_memory_asset.unit.test.d.ts +1 -0
- package/build/tools/__tests__/delete_memory_asset.unit.test.js +87 -0
- package/build/tools/__tests__/search_memory.unit.test.js +1 -0
- package/build/tools/__tests__/start_bugfix.unit.test.js +34 -1
- package/build/tools/__tests__/update_memory_asset.unit.test.d.ts +1 -0
- package/build/tools/__tests__/update_memory_asset.unit.test.js +82 -0
- package/build/tools/__tests__/workflow.unit.test.d.ts +1 -0
- package/build/tools/__tests__/workflow.unit.test.js +24 -0
- package/build/tools/check_spec.js +16 -16
- package/build/tools/code_insight.js +46 -42
- package/build/tools/code_review.js +11 -4
- package/build/tools/cursor_read_conversation.d.ts +7 -0
- package/build/tools/cursor_read_conversation.js +36 -0
- package/build/tools/delete_memory_asset.d.ts +7 -0
- package/build/tools/delete_memory_asset.js +57 -0
- package/build/tools/fix_bug.js +161 -161
- package/build/tools/gencommit.js +60 -60
- package/build/tools/index.d.ts +3 -0
- package/build/tools/index.js +3 -0
- package/build/tools/init_project_context.js +432 -432
- package/build/tools/search_memory.js +5 -2
- package/build/tools/start_bugfix.js +37 -4
- package/build/tools/start_feature.js +4 -3
- package/build/tools/start_product.js +1 -1
- package/build/tools/start_ui.js +22 -4
- package/build/tools/ui-ux-tools.d.ts +3 -0
- package/build/tools/ui-ux-tools.js +302 -290
- package/build/tools/update_memory_asset.d.ts +7 -0
- package/build/tools/update_memory_asset.js +98 -0
- package/build/tools/workflow.d.ts +13 -0
- package/build/tools/workflow.js +69 -0
- package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
- package/build/utils/design-reasoning-engine.d.ts +2 -0
- package/build/utils/design-reasoning-engine.js +3 -0
- package/build/utils/themes-sync.js +8 -8
- package/package.json +6 -3
- package/build/resources/index.d.ts +0 -4
- package/build/resources/index.js +0 -4
- package/build/resources/tool-params-guide.d.ts +0 -571
- package/build/resources/tool-params-guide.js +0 -488
- package/build/tools/analyze_project.d.ts +0 -1
- package/build/tools/analyze_project.js +0 -527
- package/build/tools/check_deps.d.ts +0 -13
- package/build/tools/check_deps.js +0 -204
- package/build/tools/convert.d.ts +0 -13
- package/build/tools/convert.js +0 -599
- package/build/tools/css_order.d.ts +0 -13
- package/build/tools/css_order.js +0 -81
- package/build/tools/debug.d.ts +0 -13
- package/build/tools/debug.js +0 -131
- package/build/tools/design2code.d.ts +0 -20
- package/build/tools/design2code.js +0 -426
- package/build/tools/detect_shell.d.ts +0 -6
- package/build/tools/detect_shell.js +0 -151
- package/build/tools/explain.d.ts +0 -13
- package/build/tools/explain.js +0 -390
- package/build/tools/fix.d.ts +0 -13
- package/build/tools/fix.js +0 -303
- package/build/tools/gen_mock.d.ts +0 -22
- package/build/tools/gen_mock.js +0 -269
- package/build/tools/gen_skill.d.ts +0 -13
- package/build/tools/gen_skill.js +0 -560
- package/build/tools/genapi.d.ts +0 -13
- package/build/tools/genapi.js +0 -174
- package/build/tools/genchangelog.d.ts +0 -13
- package/build/tools/genchangelog.js +0 -250
- package/build/tools/gendoc.d.ts +0 -13
- package/build/tools/gendoc.js +0 -232
- package/build/tools/genpr.d.ts +0 -13
- package/build/tools/genpr.js +0 -194
- package/build/tools/genreadme.d.ts +0 -13
- package/build/tools/genreadme.js +0 -626
- package/build/tools/gensql.d.ts +0 -13
- package/build/tools/gensql.js +0 -320
- package/build/tools/genui.d.ts +0 -13
- package/build/tools/genui.js +0 -803
- package/build/tools/init_component_catalog.d.ts +0 -22
- package/build/tools/init_component_catalog.js +0 -809
- package/build/tools/init_setting.d.ts +0 -13
- package/build/tools/init_setting.js +0 -47
- package/build/tools/perf.d.ts +0 -13
- package/build/tools/perf.js +0 -409
- package/build/tools/render_ui.d.ts +0 -22
- package/build/tools/render_ui.js +0 -384
- package/build/tools/resolve_conflict.d.ts +0 -13
- package/build/tools/resolve_conflict.js +0 -349
- package/build/tools/security_scan.d.ts +0 -22
- package/build/tools/security_scan.js +0 -323
- package/build/tools/split.d.ts +0 -13
- package/build/tools/split.js +0 -599
- package/build/tools/start_api.d.ts +0 -13
- package/build/tools/start_api.js +0 -193
- package/build/tools/start_doc.d.ts +0 -13
- package/build/tools/start_doc.js +0 -207
- package/build/tools/start_refactor.d.ts +0 -13
- package/build/tools/start_refactor.js +0 -188
- package/build/tools/start_release.d.ts +0 -13
- package/build/tools/start_release.js +0 -167
- package/build/tools/start_review.d.ts +0 -13
- package/build/tools/start_review.js +0 -175
- /package/build/{utils/design-docs-generator.d.ts → lib/__tests__/dev-workflow.unit.test.d.ts} +0 -0
- /package/build/{utils/design-docs-generator.js → lib/__tests__/handles.unit.test.d.ts} +0 -0
|
@@ -2,6 +2,7 @@ import { parseArgs, getString, getNumber } from '../utils/parseArgs.js';
|
|
|
2
2
|
import { okStructured } from '../lib/response.js';
|
|
3
3
|
import { createMemoryClient } from '../lib/memory-client.js';
|
|
4
4
|
import { formatSearchMemoryResultsText, shouldShowSourceInSearch, } from '../lib/memory-orchestration.js';
|
|
5
|
+
import { attachHandles, buildMemoryAssetHandles } from '../lib/handles.js';
|
|
5
6
|
import { getMemoryConfig } from '../lib/memory-config.js';
|
|
6
7
|
import { handleToolError } from '../utils/error-handler.js';
|
|
7
8
|
export async function searchMemory(args) {
|
|
@@ -46,12 +47,14 @@ export async function searchMemory(args) {
|
|
|
46
47
|
tags: item.tags,
|
|
47
48
|
sourcePath: shouldShowSourceInSearch(item, config) ? item.sourcePath : undefined,
|
|
48
49
|
}));
|
|
49
|
-
return okStructured(formatSearchMemoryResultsText(results, config), {
|
|
50
|
+
return okStructured(formatSearchMemoryResultsText(results, config), attachHandles({
|
|
50
51
|
enabled: true,
|
|
51
52
|
query,
|
|
52
53
|
count: results.length,
|
|
53
54
|
results: items,
|
|
54
|
-
}
|
|
55
|
+
}, {
|
|
56
|
+
memory_assets: buildMemoryAssetHandles(items),
|
|
57
|
+
}));
|
|
55
58
|
}
|
|
56
59
|
catch (error) {
|
|
57
60
|
return handleToolError(error, 'search_memory');
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import { parseArgs, getString, getNumber } from "../utils/parseArgs.js";
|
|
3
3
|
import { okStructured } from "../lib/response.js";
|
|
4
|
+
import { attachHandles } from "../lib/handles.js";
|
|
4
5
|
import { renderOrchestrationHeader } from "../lib/orchestration-guidance.js";
|
|
5
6
|
import { BugFixReportSchema, RequirementsLoopSchema } from "../schemas/structured-output.js";
|
|
6
7
|
import { reportToolProgress, throwIfAborted, } from "../lib/tool-execution-context.js";
|
|
7
8
|
import { buildBugfixGraphContext } from "../lib/gitnexus-bridge.js";
|
|
8
|
-
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, } from "../lib/memory-orchestration.js";
|
|
9
|
+
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, buildOrchestrationHandles, } from "../lib/memory-orchestration.js";
|
|
9
10
|
import { resolveWorkspaceRoot, isLikelyProjectNamedRelativePath, buildProjectRootRetryHint } from "../lib/workspace-root.js";
|
|
10
11
|
import { layoutAbsPath, parseLayoutArgsFromRecord, resolveProjectContextLayout, } from "../lib/project-context-layout.js";
|
|
12
|
+
import { buildCheckSpecPlanStep, renderSpecGatePromptSection, resolveBugfixSpecGate, } from "../lib/spec-gate.js";
|
|
11
13
|
function decideTemplateProfile(description) {
|
|
12
14
|
const text = description || '';
|
|
13
15
|
const lengthScore = text.length >= 200 ? 2 : text.length >= 120 ? 1 : 0;
|
|
@@ -120,6 +122,8 @@ const PROMPT_TEMPLATE_GUIDED = `# 🐛 Bug 修复编排指南(TBP 8 步真因
|
|
|
120
122
|
|
|
121
123
|
**产出**: 测试代码
|
|
122
124
|
|
|
125
|
+
{spec_gate_section}
|
|
126
|
+
|
|
123
127
|
---
|
|
124
128
|
|
|
125
129
|
## ✅ 完成检查
|
|
@@ -177,6 +181,7 @@ const PROMPT_TEMPLATE_STRICT = `# 🐛 Bug 修复编排(严格 | TBP 8 步)
|
|
|
177
181
|
"framework": "[根据项目上下文选择: jest/vitest/mocha]"
|
|
178
182
|
}
|
|
179
183
|
\`\`\`
|
|
184
|
+
{spec_gate_section}
|
|
180
185
|
|
|
181
186
|
---
|
|
182
187
|
|
|
@@ -307,6 +312,8 @@ export async function startBugfix(args, context) {
|
|
|
307
312
|
stack_trace: ["stack", "trace", "堆栈", "调用栈"],
|
|
308
313
|
code_context: ["code_context", "code", "context", "相关代码", "代码上下文"],
|
|
309
314
|
project_root: ["projectRoot", "project_path", "projectPath", "root", "project_root", "项目路径", "项目根目录"],
|
|
315
|
+
docs_dir: ["dir", "output", "目录", "文档目录"],
|
|
316
|
+
feature_name: ["name", "feature", "spec", "功能名", "功能名称", "规格"],
|
|
310
317
|
analysis_mode: ["analysis_mode", "methodology", "rca", "tbp", "分析方法"],
|
|
311
318
|
template_profile: ["profile", "template_profile", "模板档位", "模板模式"],
|
|
312
319
|
requirements_mode: ["mode", "requirements_mode", "loop", "需求模式"],
|
|
@@ -320,6 +327,7 @@ export async function startBugfix(args, context) {
|
|
|
320
327
|
const codeContext = getString(parsedArgs.code_context);
|
|
321
328
|
const projectRoot = getString(parsedArgs.project_root);
|
|
322
329
|
const docsDir = getString(parsedArgs.docs_dir) || "docs";
|
|
330
|
+
const featureNameInput = getString(parsedArgs.feature_name);
|
|
323
331
|
if (isLikelyProjectNamedRelativePath(projectRoot)) {
|
|
324
332
|
return {
|
|
325
333
|
content: [{
|
|
@@ -388,6 +396,18 @@ export async function startBugfix(args, context) {
|
|
|
388
396
|
layoutManifest: layout.manifestPath,
|
|
389
397
|
};
|
|
390
398
|
const graphDocsMissing = !bootstrapState.latestMarkdownExists || !bootstrapState.latestJsonExists;
|
|
399
|
+
const specGate = resolveBugfixSpecGate({
|
|
400
|
+
featureName: featureNameInput,
|
|
401
|
+
projectRoot: layout.projectRoot,
|
|
402
|
+
docsDir,
|
|
403
|
+
hintText: combinedText,
|
|
404
|
+
});
|
|
405
|
+
const specGateSection = specGate ? renderSpecGatePromptSection(specGate) : '';
|
|
406
|
+
if (specGate) {
|
|
407
|
+
headerNotes.push(specGate.detected
|
|
408
|
+
? `规格闸门: 已自动关联 ${specGate.specDir}/,修复后需 check_spec`
|
|
409
|
+
: `规格闸门: 关联 ${specGate.specDir}/,修复后需 check_spec`);
|
|
410
|
+
}
|
|
391
411
|
const graphContext = await buildBugfixGraphContext({
|
|
392
412
|
errorMessage,
|
|
393
413
|
stackTrace,
|
|
@@ -571,7 +591,7 @@ ${graphContext.highlights.length > 0
|
|
|
571
591
|
},
|
|
572
592
|
};
|
|
573
593
|
await reportToolProgress(context, 95, "start_bugfix: loop 输出已生成");
|
|
574
|
-
return okStructured(guide, loopReport, {
|
|
594
|
+
return okStructured(guide, attachHandles(loopReport, buildOrchestrationHandles(memoryContext)), {
|
|
575
595
|
schema: RequirementsLoopSchema,
|
|
576
596
|
note: 'AI 应按轮次澄清 Bug 需求并更新结构化输出,满足结束条件后再进入 fix_bug / gentest',
|
|
577
597
|
});
|
|
@@ -598,7 +618,8 @@ ${graphContext.highlights.length > 0
|
|
|
598
618
|
.replace(/{error_message}/g, errorMessage)
|
|
599
619
|
.replace(/{stack_trace}/g, stackTrace)
|
|
600
620
|
.replace(/{analysis_mode}/g, analysisMode)
|
|
601
|
-
.replace(/{stack_trace_section}/g, stackTraceSection)
|
|
621
|
+
.replace(/{stack_trace_section}/g, stackTraceSection)
|
|
622
|
+
.replace(/{spec_gate_section}/g, specGateSection);
|
|
602
623
|
const guide = header + memoryGuideSection + renderedPrompt + graphGuideSection;
|
|
603
624
|
const plan = {
|
|
604
625
|
mode: 'delegated',
|
|
@@ -635,6 +656,7 @@ ${graphContext.highlights.length > 0
|
|
|
635
656
|
},
|
|
636
657
|
outputs: [],
|
|
637
658
|
},
|
|
659
|
+
...(specGate ? [buildCheckSpecPlanStep(specGate.featureName, specGate.docsDir)] : []),
|
|
638
660
|
...(memoryContext.enabled ? [buildMemoryPlanStep('bugfix')] : []),
|
|
639
661
|
],
|
|
640
662
|
};
|
|
@@ -659,6 +681,13 @@ ${graphContext.highlights.length > 0
|
|
|
659
681
|
status: 'pending',
|
|
660
682
|
description: '调用 gentest 工具生成测试用例',
|
|
661
683
|
},
|
|
684
|
+
...(specGate
|
|
685
|
+
? [{
|
|
686
|
+
name: '规格闸门校验',
|
|
687
|
+
status: 'pending',
|
|
688
|
+
description: `修复后调用 check_spec 校验 ${specGate.specDir}/`,
|
|
689
|
+
}]
|
|
690
|
+
: []),
|
|
662
691
|
],
|
|
663
692
|
artifacts: [],
|
|
664
693
|
nextSteps: [
|
|
@@ -670,6 +699,9 @@ ${graphContext.highlights.length > 0
|
|
|
670
699
|
'调用 fix_bug 工具分析问题并形成因果句真因',
|
|
671
700
|
'调用 gentest 工具生成回归测试',
|
|
672
701
|
'运行测试验证修复',
|
|
702
|
+
...(specGate
|
|
703
|
+
? [`修复后调用 check_spec 校验 ${specGate.specDir}/,未通过先补规格再重跑`]
|
|
704
|
+
: []),
|
|
673
705
|
],
|
|
674
706
|
rootCause: '待分析(需要调用 fix_bug 工具)',
|
|
675
707
|
fixPlan: '待制定(需要调用 fix_bug 工具)',
|
|
@@ -709,10 +741,11 @@ ${graphContext.highlights.length > 0
|
|
|
709
741
|
graphDocsMissing,
|
|
710
742
|
},
|
|
711
743
|
graphContext,
|
|
744
|
+
...(specGate ? { specGate } : {}),
|
|
712
745
|
},
|
|
713
746
|
};
|
|
714
747
|
await reportToolProgress(context, 95, "start_bugfix: 执行计划输出已生成");
|
|
715
|
-
return okStructured(guide, bugfixReport, {
|
|
748
|
+
return okStructured(guide, attachHandles(bugfixReport, buildOrchestrationHandles(memoryContext)), {
|
|
716
749
|
schema: BugFixReportSchema,
|
|
717
750
|
note: 'AI 应该按照指南执行步骤,并在每个步骤完成后更新 structuredContent 中的状态',
|
|
718
751
|
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import { parseArgs, getString, getNumber } from "../utils/parseArgs.js";
|
|
3
3
|
import { okStructured } from "../lib/response.js";
|
|
4
|
+
import { attachHandles } from "../lib/handles.js";
|
|
4
5
|
import { renderOrchestrationHeader } from "../lib/orchestration-guidance.js";
|
|
5
6
|
import { FeatureReportSchema, RequirementsLoopSchema } from "../schemas/structured-output.js";
|
|
6
7
|
import { reportToolProgress, throwIfAborted, } from "../lib/tool-execution-context.js";
|
|
7
8
|
import { buildFeatureGraphContext } from "../lib/gitnexus-bridge.js";
|
|
8
|
-
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, } from "../lib/memory-orchestration.js";
|
|
9
|
+
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, buildOrchestrationHandles, } from "../lib/memory-orchestration.js";
|
|
9
10
|
import { resolveWorkspaceRoot, toWorkspacePath, isLikelyProjectNamedRelativePath, buildProjectRootRetryHint } from "../lib/workspace-root.js";
|
|
10
11
|
import { layoutAbsPath, parseLayoutArgsFromRecord, resolveProjectContextLayout, } from "../lib/project-context-layout.js";
|
|
11
12
|
/**
|
|
@@ -463,7 +464,7 @@ ${graphContext.highlights.length > 0
|
|
|
463
464
|
},
|
|
464
465
|
};
|
|
465
466
|
await reportToolProgress(context, 95, "start_feature: loop 输出已生成");
|
|
466
|
-
return okStructured(guide, loopReport, {
|
|
467
|
+
return okStructured(guide, attachHandles(loopReport, buildOrchestrationHandles(memoryContext)), {
|
|
467
468
|
schema: RequirementsLoopSchema,
|
|
468
469
|
note: 'AI 应按轮次澄清需求并更新结构化输出,满足结束条件后再进入 add_feature / estimate',
|
|
469
470
|
});
|
|
@@ -595,7 +596,7 @@ ${graphContext.highlights.length > 0
|
|
|
595
596
|
},
|
|
596
597
|
};
|
|
597
598
|
await reportToolProgress(context, 95, "start_feature: 执行计划输出已生成");
|
|
598
|
-
return okStructured(guide, featureReport, {
|
|
599
|
+
return okStructured(guide, attachHandles(featureReport, buildOrchestrationHandles(memoryContext)), {
|
|
599
600
|
schema: FeatureReportSchema,
|
|
600
601
|
note: 'AI 应该按照指南执行步骤,并在每个步骤完成后更新 structuredContent 中的状态和估算信息',
|
|
601
602
|
});
|
|
@@ -89,7 +89,7 @@ export async function startProduct(args, context) {
|
|
|
89
89
|
],
|
|
90
90
|
notes: [buildSkillHeaderNote(skillBridge)],
|
|
91
91
|
});
|
|
92
|
-
const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
|
|
92
|
+
const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
|
|
93
93
|
|
|
94
94
|
基于${requirementsSource},请按照以下步骤完成从需求到 HTML 原型的完整产品设计流程。
|
|
95
95
|
|
package/build/tools/start_ui.js
CHANGED
|
@@ -10,14 +10,26 @@
|
|
|
10
10
|
import { parseArgs, getString, getNumber } from "../utils/parseArgs.js";
|
|
11
11
|
import { getReasoningEngine } from "./ui-ux-tools.js";
|
|
12
12
|
import { okStructured } from "../lib/response.js";
|
|
13
|
+
import { attachHandles } from "../lib/handles.js";
|
|
13
14
|
import { renderOrchestrationHeader } from "../lib/orchestration-guidance.js";
|
|
14
15
|
import { buildSkillBridgePlanStep, buildSkillHeaderNote, detectSkillBridge, renderSkillBridgeSection, } from "../lib/skill-bridge.js";
|
|
15
16
|
import { UIReportSchema, RequirementsLoopSchema } from "../schemas/structured-output.js";
|
|
16
17
|
import { detectProjectType } from "../lib/project-detector.js";
|
|
17
18
|
import { resolveWorkspaceRoot, isLikelyProjectNamedRelativePath, buildProjectRootRetryHint } from "../lib/workspace-root.js";
|
|
18
19
|
import { reportToolProgress, throwIfAborted, } from "../lib/tool-execution-context.js";
|
|
19
|
-
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, } from "../lib/memory-orchestration.js";
|
|
20
|
+
import { buildMemoryPlanStep, loadMemoryInjectionContext, renderMemoryGuideSection, buildOrchestrationHandles, } from "../lib/memory-orchestration.js";
|
|
20
21
|
import { isShadcnStack } from "../lib/shadcn-ui.js";
|
|
22
|
+
import { renderUiHardRules, renderUiBannedList, renderPreFlightChecklist } from "../lib/quality-constraints.js";
|
|
23
|
+
/** 渲染代码步骤统一注入的 UI 硬约束 + 黑名单 + 交付前自检 */
|
|
24
|
+
const UI_CONSTRAINTS_BLOCK = `
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
${renderUiHardRules()}
|
|
29
|
+
|
|
30
|
+
${renderUiBannedList()}
|
|
31
|
+
|
|
32
|
+
${renderPreFlightChecklist()}`;
|
|
21
33
|
function buildShadcnBlocksPlanStep(description, framework) {
|
|
22
34
|
if (!isShadcnStack(framework)) {
|
|
23
35
|
return [];
|
|
@@ -262,6 +274,10 @@ A: 不需要。如果文件已存在,直接跳过步骤 1。
|
|
|
262
274
|
|
|
263
275
|
**Q: 如何使用自定义模板?**
|
|
264
276
|
A: 在 \`docs/ui/\` 目录创建 JSON 模板文件,然后在步骤 4 中指定模板路径。
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
${UI_CONSTRAINTS_BLOCK}
|
|
265
281
|
`;
|
|
266
282
|
const PROMPT_TEMPLATE_STRICT = `# UI 开发编排(严格)
|
|
267
283
|
|
|
@@ -339,6 +355,8 @@ const PROMPT_TEMPLATE_STRICT = `# UI 开发编排(严格)
|
|
|
339
355
|
## 步骤 7: 更新项目上下文索引
|
|
340
356
|
|
|
341
357
|
将 UI 文档链接添加到 \`docs/project-context.md\`
|
|
358
|
+
|
|
359
|
+
${UI_CONSTRAINTS_BLOCK}
|
|
342
360
|
`;
|
|
343
361
|
const LOOP_PROMPT_TEMPLATE_GUIDED = `# 🧭 UI 需求澄清与补全(Requirements Loop)
|
|
344
362
|
|
|
@@ -765,7 +783,7 @@ start_ui <描述> --requirements_mode=loop
|
|
|
765
783
|
},
|
|
766
784
|
};
|
|
767
785
|
await reportToolProgress(context, 95, "start_ui: loop 输出已生成");
|
|
768
|
-
return okStructured(guide, loopReport, {
|
|
786
|
+
return okStructured(guide, attachHandles(loopReport, buildOrchestrationHandles(memoryContext)), {
|
|
769
787
|
schema: RequirementsLoopSchema,
|
|
770
788
|
note: 'AI 应按轮次澄清 UI 需求并更新结构化输出,满足结束条件后再执行 UI 计划',
|
|
771
789
|
});
|
|
@@ -1018,7 +1036,7 @@ ${recommendation.reasoning}
|
|
|
1018
1036
|
},
|
|
1019
1037
|
};
|
|
1020
1038
|
await reportToolProgress(context, 95, "start_ui: auto 输出已生成");
|
|
1021
|
-
return okStructured(smartPlan, uiReport, {
|
|
1039
|
+
return okStructured(smartPlan, attachHandles(uiReport, buildOrchestrationHandles(memoryContext)), {
|
|
1022
1040
|
schema: UIReportSchema,
|
|
1023
1041
|
note: 'AI 应该按照智能计划执行步骤,并在每个步骤完成后更新 structuredContent',
|
|
1024
1042
|
});
|
|
@@ -1221,7 +1239,7 @@ start_ui "设置页面" --framework=react
|
|
|
1221
1239
|
},
|
|
1222
1240
|
};
|
|
1223
1241
|
await reportToolProgress(context, 95, "start_ui: manual 输出已生成");
|
|
1224
|
-
return okStructured(guide, uiReport, {
|
|
1242
|
+
return okStructured(guide, attachHandles(uiReport, buildOrchestrationHandles(memoryContext)), {
|
|
1225
1243
|
schema: UIReportSchema,
|
|
1226
1244
|
note: 'AI 应该按照指南执行步骤,并在每个步骤完成后更新 structuredContent',
|
|
1227
1245
|
});
|