@fitlab-ai/agent-infra 0.7.0 → 0.7.2
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/bin/cli.ts +12 -1
- package/dist/bin/cli.js +13 -1
- package/dist/lib/builtin-tuis.js +45 -0
- package/dist/lib/defaults.json +3 -0
- package/dist/lib/init.js +62 -23
- package/dist/lib/prompt.js +49 -1
- package/dist/lib/sandbox/commands/create.js +10 -2
- package/dist/lib/sandbox/commands/enter.js +8 -7
- package/dist/lib/sandbox/commands/list-running.js +62 -28
- package/dist/lib/sandbox/commands/ls.js +20 -22
- package/dist/lib/sandbox/commands/rebuild.js +3 -11
- package/dist/lib/sandbox/commands/rm.js +2 -0
- package/dist/lib/sandbox/image-prune.js +18 -0
- package/dist/lib/sandbox/index.js +7 -3
- package/dist/lib/sandbox/task-resolver.js +18 -0
- package/dist/lib/sandbox/tools.js +1 -1
- package/dist/lib/table.js +29 -0
- package/dist/lib/task/commands/ls.js +122 -0
- package/dist/lib/task/commands/show.js +135 -0
- package/dist/lib/task/frontmatter.js +32 -0
- package/dist/lib/task/index.js +41 -0
- package/dist/lib/task/short-id.js +80 -0
- package/dist/lib/update.js +59 -18
- package/lib/builtin-tuis.ts +55 -0
- package/lib/defaults.json +3 -0
- package/lib/init.ts +87 -35
- package/lib/prompt.ts +54 -1
- package/lib/sandbox/commands/create.ts +11 -2
- package/lib/sandbox/commands/enter.ts +8 -7
- package/lib/sandbox/commands/list-running.ts +70 -31
- package/lib/sandbox/commands/ls.ts +25 -25
- package/lib/sandbox/commands/rebuild.ts +3 -12
- package/lib/sandbox/commands/rm.ts +3 -0
- package/lib/sandbox/image-prune.ts +23 -0
- package/lib/sandbox/index.ts +7 -3
- package/lib/sandbox/task-resolver.ts +23 -1
- package/lib/sandbox/tools.ts +1 -1
- package/lib/table.ts +32 -0
- package/lib/task/commands/ls.ts +138 -0
- package/lib/task/commands/show.ts +139 -0
- package/lib/task/frontmatter.ts +30 -0
- package/lib/task/index.ts +44 -0
- package/lib/task/short-id.ts +97 -0
- package/lib/update.ts +71 -30
- package/package.json +1 -1
- package/templates/.agents/README.en.md +32 -0
- package/templates/.agents/README.zh-CN.md +32 -0
- package/templates/.agents/hooks/auto-resume.sh +87 -0
- package/templates/.agents/rules/create-issue.github.en.md +1 -1
- package/templates/.agents/rules/create-issue.github.zh-CN.md +1 -1
- package/templates/.agents/rules/milestone-inference.github.en.md +4 -1
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +4 -1
- package/templates/.agents/rules/next-step-output.en.md +59 -0
- package/templates/.agents/rules/next-step-output.zh-CN.md +59 -0
- package/templates/.agents/rules/task-short-id.en.md +133 -0
- package/templates/.agents/rules/task-short-id.zh-CN.md +105 -0
- package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +17 -0
- package/templates/.agents/scripts/task-short-id.js +556 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +13 -11
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +13 -12
- package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -1
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/block-task/SKILL.en.md +17 -5
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +17 -6
- package/templates/.agents/skills/block-task/config/verify.json +1 -1
- package/templates/.agents/skills/cancel-task/SKILL.en.md +17 -5
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +17 -6
- package/templates/.agents/skills/cancel-task/config/verify.json +1 -1
- package/templates/.agents/skills/check-task/SKILL.en.md +15 -9
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +15 -10
- package/templates/.agents/skills/close-codescan/SKILL.en.md +16 -5
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +16 -5
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +16 -5
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +16 -5
- package/templates/.agents/skills/code-task/SKILL.en.md +13 -5
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +14 -6
- package/templates/.agents/skills/code-task/config/verify.en.json +2 -1
- package/templates/.agents/skills/code-task/config/verify.zh-CN.json +2 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +10 -5
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +10 -5
- package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
- package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
- package/templates/.agents/skills/code-task/reference/report-template.en.md +8 -0
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +8 -0
- package/templates/.agents/skills/commit/SKILL.en.md +5 -1
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +5 -1
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +9 -9
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +9 -9
- package/templates/.agents/skills/complete-task/SKILL.en.md +17 -1
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +17 -2
- package/templates/.agents/skills/complete-task/config/verify.en.json +1 -1
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/create-pr/SKILL.en.md +9 -5
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +9 -5
- package/templates/.agents/skills/create-pr/config/verify.json +2 -1
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +1 -1
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +1 -1
- package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
- package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
- package/templates/.agents/skills/create-task/SKILL.en.md +29 -15
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +29 -16
- package/templates/.agents/skills/create-task/config/verify.json +1 -1
- package/templates/.agents/skills/import-codescan/SKILL.en.md +20 -6
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +20 -6
- package/templates/.agents/skills/import-codescan/config/verify.json +1 -1
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +20 -6
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +20 -6
- package/templates/.agents/skills/import-dependabot/config/verify.json +1 -1
- package/templates/.agents/skills/import-issue/SKILL.en.md +19 -5
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +19 -5
- package/templates/.agents/skills/plan-task/SKILL.en.md +13 -11
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +13 -12
- package/templates/.agents/skills/plan-task/config/verify.en.json +1 -1
- package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/restore-task/SKILL.en.md +12 -0
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +12 -1
- package/templates/.agents/skills/review-analysis/SKILL.en.md +7 -1
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +7 -2
- package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -2
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -2
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +15 -15
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +15 -15
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +7 -1
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +7 -1
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +2 -0
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +2 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +8 -1
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +8 -2
- package/templates/.agents/skills/review-code/config/verify.en.json +3 -2
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -2
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +9 -9
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +9 -9
- package/templates/.agents/skills/review-code/reference/report-template.en.md +7 -1
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +7 -1
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +2 -0
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +2 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +7 -1
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +7 -2
- package/templates/.agents/skills/review-plan/config/verify.en.json +3 -2
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -2
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +15 -15
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +15 -15
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +7 -1
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +7 -1
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +2 -0
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +2 -0
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -0
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +112 -21
- package/templates/.agents/workflows/bug-fix.en.yaml +1 -1
- package/templates/.agents/workflows/bug-fix.zh-CN.yaml +1 -1
- package/templates/.agents/workflows/feature-development.en.yaml +1 -1
- package/templates/.agents/workflows/feature-development.zh-CN.yaml +1 -1
- package/templates/.agents/workflows/refactoring.en.yaml +1 -1
- package/templates/.agents/workflows/refactoring.zh-CN.yaml +1 -1
- package/templates/.claude/settings.json +11 -0
|
@@ -42,6 +42,9 @@ const DEFAULTS = {
|
|
|
42
42
|
"disk": null
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
|
+
"task": {
|
|
46
|
+
"shortIdLength": 2
|
|
47
|
+
},
|
|
45
48
|
"labels": {
|
|
46
49
|
"in": {}
|
|
47
50
|
},
|
|
@@ -88,6 +91,39 @@ const PACKAGE_NAME = '@fitlab-ai/agent-infra';
|
|
|
88
91
|
const KNOWN_PLATFORMS = new Set(['github']);
|
|
89
92
|
const KNOWN_LANGUAGES = new Set(['en', 'zh-CN']);
|
|
90
93
|
|
|
94
|
+
// Single source of truth for built-in TUI ids and owned path prefixes.
|
|
95
|
+
// Keep in sync with lib/builtin-tuis.ts (enforced by tests/unit/scripts/sync-templates-consts.test.ts).
|
|
96
|
+
const BUILTIN_TUI_IDS = ['claude-code', 'codex', 'gemini-cli', 'opencode'];
|
|
97
|
+
const BUILTIN_TUI_OWNED_PATH_PREFIXES = {
|
|
98
|
+
'claude-code': ['.claude/'],
|
|
99
|
+
'codex': ['.codex/'],
|
|
100
|
+
'gemini-cli': ['.gemini/'],
|
|
101
|
+
'opencode': ['.opencode/']
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
function resolveEnabledTUIs(value) {
|
|
105
|
+
// Missing field / null / non-array → full set (backward compat).
|
|
106
|
+
if (!Array.isArray(value)) return new Set(BUILTIN_TUI_IDS);
|
|
107
|
+
// Empty array is a meaningful user choice: no built-in TUI managed.
|
|
108
|
+
const set = new Set();
|
|
109
|
+
for (const v of value) {
|
|
110
|
+
if (typeof v === 'string' && BUILTIN_TUI_IDS.includes(v)) set.add(v);
|
|
111
|
+
}
|
|
112
|
+
return set;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function isPathOwnedByDisabledTUI(rel, enabledSet) {
|
|
116
|
+
const normalized = String(rel || '').replace(/\\/g, '/').replace(/^\.\//, '');
|
|
117
|
+
for (const tui of BUILTIN_TUI_IDS) {
|
|
118
|
+
if (enabledSet.has(tui)) continue;
|
|
119
|
+
for (const prefix of BUILTIN_TUI_OWNED_PATH_PREFIXES[tui]) {
|
|
120
|
+
const trimmed = prefix.replace(/\/$/, '');
|
|
121
|
+
if (normalized === trimmed || normalized.startsWith(prefix)) return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
|
|
91
127
|
function norm(p) { return p.replace(/\\/g, '/'); }
|
|
92
128
|
|
|
93
129
|
function normDir(p) {
|
|
@@ -654,26 +690,32 @@ function learnAndGenerateCommands(projectRoot, customSkills, tool, templateSkill
|
|
|
654
690
|
}
|
|
655
691
|
}
|
|
656
692
|
|
|
657
|
-
function generateCustomCommands(projectRoot, customSkills, project, lang, report, customTUIs, templateSkillNames) {
|
|
693
|
+
function generateCustomCommands(projectRoot, customSkills, project, lang, report, customTUIs, templateSkillNames, enabledTUIs) {
|
|
658
694
|
for (const skill of customSkills) {
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
695
|
+
if (enabledTUIs.has('claude-code')) {
|
|
696
|
+
writeIfChanged(
|
|
697
|
+
projectRoot,
|
|
698
|
+
`.claude/commands/${skill.dirName}.md`,
|
|
699
|
+
generateClaudeCommand(skill, lang),
|
|
700
|
+
report.custom.commands
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
if (enabledTUIs.has('gemini-cli')) {
|
|
704
|
+
writeIfChanged(
|
|
705
|
+
projectRoot,
|
|
706
|
+
'.gemini/commands/' + project + '/' + skill.dirName + '.toml',
|
|
707
|
+
generateGeminiCommand(skill, lang),
|
|
708
|
+
report.custom.commands
|
|
709
|
+
);
|
|
710
|
+
}
|
|
711
|
+
if (enabledTUIs.has('opencode')) {
|
|
712
|
+
writeIfChanged(
|
|
713
|
+
projectRoot,
|
|
714
|
+
`.opencode/commands/${skill.dirName}.md`,
|
|
715
|
+
generateOpenCodeCommand(skill, lang),
|
|
716
|
+
report.custom.commands
|
|
717
|
+
);
|
|
718
|
+
}
|
|
677
719
|
}
|
|
678
720
|
|
|
679
721
|
const tools = Array.isArray(customTUIs) ? customTUIs : [];
|
|
@@ -969,6 +1011,7 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
969
1011
|
|
|
970
1012
|
const { project, org, language: lang = 'en' } = cfg;
|
|
971
1013
|
const platformType = cfg.platform?.type || DEFAULTS.platform.type;
|
|
1014
|
+
const enabledTUIs = resolveEnabledTUIs(cfg.tuis);
|
|
972
1015
|
const customTUIsConfig = Array.isArray(cfg.customTUIs) ? cfg.customTUIs : [];
|
|
973
1016
|
const vars = { project, org };
|
|
974
1017
|
const templateSkillNames = listTemplateSkillNames(templateRoot);
|
|
@@ -989,7 +1032,7 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
989
1032
|
errors: [],
|
|
990
1033
|
conflicts: []
|
|
991
1034
|
},
|
|
992
|
-
managed: { written: [], created: [], unchanged: [], skippedMerged: [], skippedPlatform: [], removed: [] },
|
|
1035
|
+
managed: { written: [], created: [], unchanged: [], skippedMerged: [], skippedPlatform: [], skippedTUI: [], removed: [] },
|
|
993
1036
|
custom: {
|
|
994
1037
|
detected: [],
|
|
995
1038
|
generated: [],
|
|
@@ -1016,10 +1059,12 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
1016
1059
|
const known = new Set([...managed, ...merged, ...ejected]);
|
|
1017
1060
|
for (const e of (DEFAULTS.files.managed || [])) {
|
|
1018
1061
|
if (isPathOwnedByOtherPlatform(e, platformType)) continue;
|
|
1062
|
+
if (isPathOwnedByDisabledTUI(e, enabledTUIs)) continue;
|
|
1019
1063
|
if (!known.has(e)) { managed.push(e); known.add(e); report.registryAdded.push({ entry: e, list: 'managed' }); }
|
|
1020
1064
|
}
|
|
1021
1065
|
for (const e of (DEFAULTS.files.merged || [])) {
|
|
1022
1066
|
if (isPathOwnedByOtherPlatform(e, platformType)) continue;
|
|
1067
|
+
if (isPathOwnedByDisabledTUI(e, enabledTUIs)) continue;
|
|
1023
1068
|
if (!known.has(e)) { merged.push(e); known.add(e); report.registryAdded.push({ entry: e, list: 'merged' }); }
|
|
1024
1069
|
}
|
|
1025
1070
|
|
|
@@ -1050,11 +1095,50 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
1050
1095
|
report.managed.removed.push(norm(path.relative(projectRoot, target)));
|
|
1051
1096
|
}
|
|
1052
1097
|
|
|
1098
|
+
// Cleanup files owned by disabled built-in TUIs. Iterates managed + merged
|
|
1099
|
+
// only (ejected entries are explicitly user-retained, see ejected loop below).
|
|
1100
|
+
//
|
|
1101
|
+
// Protection rule: only skip files registered as customTUI command targets
|
|
1102
|
+
// (e.g. a customTUI configured with dir=.codex/commands/ when codex is
|
|
1103
|
+
// disabled). Built-in TUI custom-skill commands like
|
|
1104
|
+
// .gemini/commands/<project>/<dirName>.toml are intentionally NOT protected
|
|
1105
|
+
// here so that disabling gemini-cli actually frees the gemini directory —
|
|
1106
|
+
// they will be regenerated only for still-enabled TUIs (see
|
|
1107
|
+
// generateCustomCommands).
|
|
1108
|
+
for (const entry of [...managed, ...merged]) {
|
|
1109
|
+
if (!isPathOwnedByDisabledTUI(entry, enabledTUIs)) continue;
|
|
1110
|
+
|
|
1111
|
+
if (entry.endsWith('/')) {
|
|
1112
|
+
const dir = path.join(projectRoot, entry);
|
|
1113
|
+
if (!fs.existsSync(dir)) continue;
|
|
1114
|
+
|
|
1115
|
+
for (const filePath of walkDir(dir)) {
|
|
1116
|
+
const relProj = norm(path.relative(projectRoot, filePath));
|
|
1117
|
+
if (customTUICommandTargets.has(relProj)) continue;
|
|
1118
|
+
fs.unlinkSync(filePath);
|
|
1119
|
+
report.managed.removed.push(relProj);
|
|
1120
|
+
}
|
|
1121
|
+
removeEmptyDirs(dir);
|
|
1122
|
+
continue;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
const target = path.join(projectRoot, renderPathname(entry, project));
|
|
1126
|
+
if (!fs.existsSync(target)) continue;
|
|
1127
|
+
const relProj = norm(path.relative(projectRoot, target));
|
|
1128
|
+
if (customTUICommandTargets.has(relProj)) continue;
|
|
1129
|
+
fs.unlinkSync(target);
|
|
1130
|
+
report.managed.removed.push(relProj);
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1053
1133
|
for (const entry of managed) {
|
|
1054
1134
|
if (isPathOwnedByOtherPlatform(entry, platformType)) {
|
|
1055
1135
|
report.managed.skippedPlatform.push(entry);
|
|
1056
1136
|
continue;
|
|
1057
1137
|
}
|
|
1138
|
+
if (isPathOwnedByDisabledTUI(entry, enabledTUIs)) {
|
|
1139
|
+
report.managed.skippedTUI.push(entry);
|
|
1140
|
+
continue;
|
|
1141
|
+
}
|
|
1058
1142
|
|
|
1059
1143
|
const isDir = entry.endsWith('/');
|
|
1060
1144
|
let entryRels;
|
|
@@ -1140,7 +1224,7 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
1140
1224
|
|
|
1141
1225
|
const customSkills = detectCustomSkills(projectRoot, templateSkillNames);
|
|
1142
1226
|
report.custom.detected = customSkills.map((skill) => skill.dirName);
|
|
1143
|
-
generateCustomCommands(projectRoot, customSkills, project, lang, report, customTUIs, templateSkillNames);
|
|
1227
|
+
generateCustomCommands(projectRoot, customSkills, project, lang, report, customTUIs, templateSkillNames, enabledTUIs);
|
|
1144
1228
|
|
|
1145
1229
|
for (const entry of ejected) {
|
|
1146
1230
|
const dstFull = path.join(projectRoot, entry);
|
|
@@ -1148,6 +1232,9 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
1148
1232
|
report.ejected.skipped.push(entry);
|
|
1149
1233
|
continue;
|
|
1150
1234
|
}
|
|
1235
|
+
// Do not (re)create ejected files for disabled TUIs. Existing files are
|
|
1236
|
+
// never touched by sync (handled above); this guard only blocks creation.
|
|
1237
|
+
if (isPathOwnedByDisabledTUI(entry, enabledTUIs)) continue;
|
|
1151
1238
|
|
|
1152
1239
|
const selected = platformSelect(langSelect(entryVariantRels(entry, allSet, platformType), lang, allSet, project), platformType, project);
|
|
1153
1240
|
const target = norm(renderPathname(entry, project));
|
|
@@ -1168,6 +1255,10 @@ function syncTemplates(projectRoot, templateRootOverride) {
|
|
|
1168
1255
|
report.managed.skippedPlatform.push(entry);
|
|
1169
1256
|
continue;
|
|
1170
1257
|
}
|
|
1258
|
+
if (isPathOwnedByDisabledTUI(entry, enabledTUIs)) {
|
|
1259
|
+
report.managed.skippedTUI.push(entry);
|
|
1260
|
+
continue;
|
|
1261
|
+
}
|
|
1171
1262
|
|
|
1172
1263
|
if (entry.includes('*')) {
|
|
1173
1264
|
const hits = allRels.filter(r => {
|
|
@@ -139,7 +139,7 @@ steps:
|
|
|
139
139
|
rule: "Read the highest-round plan review artifact and confirm feedback is approved or handled"
|
|
140
140
|
- name: review-code
|
|
141
141
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
142
|
-
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Code
|
|
142
|
+
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Review Code entry in task.md Activity Log"
|
|
143
143
|
outputs:
|
|
144
144
|
- name: code
|
|
145
145
|
pattern: "code.md | code-r{N}.md"
|
|
@@ -139,7 +139,7 @@ steps:
|
|
|
139
139
|
rule: "读取最高轮次的方案审查产物,确认方案已获通过或已处理反馈"
|
|
140
140
|
- name: review-code
|
|
141
141
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
142
|
-
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Code
|
|
142
|
+
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Review Code 记录一致"
|
|
143
143
|
outputs:
|
|
144
144
|
- name: code
|
|
145
145
|
pattern: "code.md | code-r{N}.md"
|
|
@@ -139,7 +139,7 @@ steps:
|
|
|
139
139
|
rule: "Read the highest-round plan review artifact and confirm feedback is approved or handled"
|
|
140
140
|
- name: review-code
|
|
141
141
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
142
|
-
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Code
|
|
142
|
+
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Review Code entry in task.md Activity Log"
|
|
143
143
|
outputs:
|
|
144
144
|
- name: code
|
|
145
145
|
pattern: "code.md | code-r{N}.md"
|
|
@@ -139,7 +139,7 @@ steps:
|
|
|
139
139
|
rule: "读取最高轮次的方案审查产物,确认方案已获通过或已处理反馈"
|
|
140
140
|
- name: review-code
|
|
141
141
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
142
|
-
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Code
|
|
142
|
+
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Review Code 记录一致"
|
|
143
143
|
outputs:
|
|
144
144
|
- name: code
|
|
145
145
|
pattern: "code.md | code-r{N}.md"
|
|
@@ -141,7 +141,7 @@ steps:
|
|
|
141
141
|
rule: "Read the highest-round plan review artifact and confirm feedback is approved or handled"
|
|
142
142
|
- name: review-code
|
|
143
143
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
144
|
-
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Code
|
|
144
|
+
rule: "In fix mode, read the highest-round code review artifact and verify it matches the latest Review Code entry in task.md Activity Log"
|
|
145
145
|
outputs:
|
|
146
146
|
- name: code
|
|
147
147
|
pattern: "code.md | code-r{N}.md"
|
|
@@ -141,7 +141,7 @@ steps:
|
|
|
141
141
|
rule: "读取最高轮次的方案审查产物,确认方案已获通过或已处理反馈"
|
|
142
142
|
- name: review-code
|
|
143
143
|
pattern: "review-code.md | review-code-r{N}.md"
|
|
144
|
-
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Code
|
|
144
|
+
rule: "修复模式读取最高轮次的代码审查产物,并校验其与 task.md Activity Log 中最近一条 Review Code 记录一致"
|
|
145
145
|
outputs:
|
|
146
146
|
- name: code
|
|
147
147
|
pattern: "code.md | code-r{N}.md"
|