deuk-agent-flow 5.0.2 → 5.0.4
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/CHANGELOG.ko.md +18 -0
- package/CHANGELOG.md +25 -0
- package/bundled/deuk-agent-flow.vsix +0 -0
- package/core-rules/AGENTS.md +5 -5
- package/package.json +20 -2
- package/scripts/bundle-vscode-vsix.ts +1 -1
- package/scripts/cli-context-commands.ts +35 -0
- package/scripts/cli-init-claude.ts +179 -0
- package/scripts/cli-init-core.ts +89 -0
- package/scripts/cli-init-instructions.ts +489 -0
- package/scripts/cli-init-migrate.ts +504 -0
- package/scripts/cli-init-workspace.ts +63 -0
- package/scripts/cli-locales.ts +85 -0
- package/scripts/cli-skill-commands.ts +3 -1
- package/scripts/cli-ticket-commands.ts +58 -0
- package/scripts/cli-ticket-docmeta.ts +103 -0
- package/scripts/cli-ticket-document.ts +153 -0
- package/scripts/cli-ticket-evidence.ts +312 -0
- package/scripts/cli-ticket-home.ts +449 -0
- package/scripts/cli-ticket-scan.ts +102 -0
- package/scripts/cli-ticket-surface.ts +56 -0
- package/scripts/oss-prepack.js +32 -0
- package/scripts/out/scripts/bundle-vscode-vsix.js +68 -0
- package/scripts/out/scripts/bundle-vscode-vsix.js.map +1 -0
- package/scripts/out/scripts/cli-args.js +374 -0
- package/scripts/out/scripts/cli-args.js.map +1 -0
- package/scripts/out/scripts/cli-context-commands.js +31 -0
- package/scripts/out/scripts/cli-context-commands.js.map +1 -0
- package/scripts/out/scripts/cli-init-claude.js +176 -0
- package/scripts/out/scripts/cli-init-claude.js.map +1 -0
- package/scripts/out/scripts/cli-init-commands.js +87 -0
- package/scripts/out/scripts/cli-init-commands.js.map +1 -0
- package/scripts/out/scripts/cli-init-core.js +89 -0
- package/scripts/out/scripts/cli-init-core.js.map +1 -0
- package/scripts/out/scripts/cli-init-instructions.js +460 -0
- package/scripts/out/scripts/cli-init-instructions.js.map +1 -0
- package/scripts/out/scripts/cli-init-logic.js +41 -0
- package/scripts/out/scripts/cli-init-logic.js.map +1 -0
- package/scripts/out/scripts/cli-init-migrate.js +497 -0
- package/scripts/out/scripts/cli-init-migrate.js.map +1 -0
- package/scripts/out/scripts/cli-init-workspace.js +57 -0
- package/scripts/out/scripts/cli-init-workspace.js.map +1 -0
- package/scripts/out/scripts/cli-locales.js +83 -0
- package/scripts/out/scripts/cli-locales.js.map +1 -0
- package/scripts/out/scripts/cli-prompts.js +101 -0
- package/scripts/out/scripts/cli-prompts.js.map +1 -0
- package/scripts/out/scripts/cli-rule-compiler.js +121 -0
- package/scripts/out/scripts/cli-rule-compiler.js.map +1 -0
- package/scripts/out/scripts/cli-skill-commands.js +708 -0
- package/scripts/out/scripts/cli-skill-commands.js.map +1 -0
- package/scripts/out/scripts/cli-telemetry-commands.js +604 -0
- package/scripts/out/scripts/cli-telemetry-commands.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-command-shared.js +2 -0
- package/scripts/out/scripts/cli-ticket-command-shared.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-commands.js +3530 -0
- package/scripts/out/scripts/cli-ticket-commands.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-docmeta.js +90 -0
- package/scripts/out/scripts/cli-ticket-docmeta.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-document.js +121 -0
- package/scripts/out/scripts/cli-ticket-document.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-evidence.js +286 -0
- package/scripts/out/scripts/cli-ticket-evidence.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-home.js +440 -0
- package/scripts/out/scripts/cli-ticket-home.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-index.js +272 -0
- package/scripts/out/scripts/cli-ticket-index.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-migration.js +261 -0
- package/scripts/out/scripts/cli-ticket-migration.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-parser.js +90 -0
- package/scripts/out/scripts/cli-ticket-parser.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-scan.js +93 -0
- package/scripts/out/scripts/cli-ticket-scan.js.map +1 -0
- package/scripts/out/scripts/cli-ticket-surface.js +53 -0
- package/scripts/out/scripts/cli-ticket-surface.js.map +1 -0
- package/scripts/out/scripts/cli-usage-commands.js +310 -0
- package/scripts/out/scripts/cli-usage-commands.js.map +1 -0
- package/scripts/out/scripts/cli-utils.js +1544 -0
- package/scripts/out/scripts/cli-utils.js.map +1 -0
- package/scripts/out/scripts/cli.js +696 -0
- package/scripts/out/scripts/cli.js.map +1 -0
- package/scripts/out/scripts/lint-md.js +238 -0
- package/scripts/out/scripts/lint-md.js.map +1 -0
- package/scripts/out/scripts/lint-rules.js +193 -0
- package/scripts/out/scripts/lint-rules.js.map +1 -0
- package/scripts/out/scripts/merge-logic.js +38 -0
- package/scripts/out/scripts/merge-logic.js.map +1 -0
- package/scripts/out/scripts/plan-parser.js +52 -0
- package/scripts/out/scripts/plan-parser.js.map +1 -0
- package/scripts/out/scripts/ticket-machine.js +94 -0
- package/scripts/out/scripts/ticket-machine.js.map +1 -0
- package/scripts/out/scripts/ticket-workflow.js +498 -0
- package/scripts/out/scripts/ticket-workflow.js.map +1 -0
- package/scripts/ticket-machine.ts +99 -0
- package/scripts/ticket-workflow.ts +544 -0
- package/templates/skills/role-closer/SKILL.md +27 -0
- package/templates/skills/role-implementer/SKILL.md +30 -0
- package/templates/skills/role-planner/SKILL.md +29 -0
- package/templates/skills/role-qa-verifier/SKILL.md +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, readdirSync, statSync, writeFileSync } from "fs";
|
|
3
|
+
import { relative, dirname, resolve } from "path";
|
|
4
|
+
import YAML from "yaml";
|
|
5
|
+
import { DEUK_ROOT_DIR, TICKET_SUBDIR, makePath, toFileUri } from "./cli-utils.js";
|
|
6
|
+
const ignoredDirs = new Set([".git", "node_modules"]);
|
|
7
|
+
export function normalizeMarkdownContent(content) {
|
|
8
|
+
const src = String(content || "").replace(/\r\n/g, "\n");
|
|
9
|
+
return src
|
|
10
|
+
.split("\n")
|
|
11
|
+
.map(line => line.replace(/[ \t]+$/g, ""))
|
|
12
|
+
.join("\n")
|
|
13
|
+
.trimEnd() + "\n";
|
|
14
|
+
}
|
|
15
|
+
export function normalizeMarkdownFile(absPath) {
|
|
16
|
+
if (!statExists(absPath) || !isMarkdownFile(absPath))
|
|
17
|
+
return false;
|
|
18
|
+
const current = readFileSync(absPath, "utf8");
|
|
19
|
+
const next = normalizeMarkdownContent(current);
|
|
20
|
+
if (next === current)
|
|
21
|
+
return false;
|
|
22
|
+
writeFileSync(absPath, next, "utf8");
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
export function collectChangedFiles(repoRoot) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
export function collectChangedMarkdownFiles(repoRoot) {
|
|
29
|
+
return collectChangedFiles(repoRoot).filter(isMarkdownFile);
|
|
30
|
+
}
|
|
31
|
+
function isMarkdownFile(filePath) {
|
|
32
|
+
const lower = filePath.toLowerCase();
|
|
33
|
+
return lower.endsWith(".md") || lower.endsWith(".mdx") || lower.endsWith(".markdown");
|
|
34
|
+
}
|
|
35
|
+
function isPlanReport(relPath) {
|
|
36
|
+
return relPath.includes(`${DEUK_ROOT_DIR}/docs/plan/`) && relPath.endsWith("-report.md");
|
|
37
|
+
}
|
|
38
|
+
function isTicketPath(repoRoot, absPath) {
|
|
39
|
+
try {
|
|
40
|
+
const relPath = relative(repoRoot, absPath).replace(/\\/g, "/");
|
|
41
|
+
return relPath.startsWith(`${DEUK_ROOT_DIR}/${TICKET_SUBDIR}/`);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function isImplicitUpwardEvidenceLink(target) {
|
|
48
|
+
const normalized = String(target || "").replace(/\\/g, "/");
|
|
49
|
+
return normalized.startsWith("../") && !normalized.includes(`${DEUK_ROOT_DIR}/${TICKET_SUBDIR}/`);
|
|
50
|
+
}
|
|
51
|
+
function looksLikeYamlFrontmatter(content) {
|
|
52
|
+
if (!(content.startsWith("---\n") || content.startsWith("---\r\n")))
|
|
53
|
+
return false;
|
|
54
|
+
const afterOpening = content.replace(/^---\r?\n/, "");
|
|
55
|
+
const lines = afterOpening.split(/\r?\n/);
|
|
56
|
+
const frontmatterLines = [];
|
|
57
|
+
for (const line of lines) {
|
|
58
|
+
if (line.trim() === "---")
|
|
59
|
+
break;
|
|
60
|
+
frontmatterLines.push(line);
|
|
61
|
+
}
|
|
62
|
+
if (frontmatterLines.length === 0)
|
|
63
|
+
return false;
|
|
64
|
+
const firstNonEmpty = frontmatterLines.find(line => line.trim());
|
|
65
|
+
if (!firstNonEmpty)
|
|
66
|
+
return false;
|
|
67
|
+
if (/^(#|>|- |\* |\d+\.)/.test(firstNonEmpty.trim()))
|
|
68
|
+
return false;
|
|
69
|
+
return frontmatterLines.some(line => /^[A-Za-z0-9_-]+\s*:/.test(line.trim()));
|
|
70
|
+
}
|
|
71
|
+
function lintWalkthroughReportStructure(relPath, content) {
|
|
72
|
+
const errors = [];
|
|
73
|
+
const hasSummary = /##\s+(Summary|요약)(?:\s|$)/i.test(content);
|
|
74
|
+
const hasVerification = /##\s+(Verification|검증)(?:\s|$)/i.test(content);
|
|
75
|
+
const hasOutcome = /##\s+(Verification Outcome|Verification Results|검증 결과)(?:\s|$)/i.test(content);
|
|
76
|
+
if (!hasSummary) {
|
|
77
|
+
errors.push(`${relPath}: report missing Summary/요약 section`);
|
|
78
|
+
}
|
|
79
|
+
if (!hasVerification) {
|
|
80
|
+
errors.push(`${relPath}: report missing Verification/검증 section`);
|
|
81
|
+
}
|
|
82
|
+
if (!hasOutcome) {
|
|
83
|
+
errors.push(`${relPath}: report missing Verification Outcome/Verification Results/검증 결과 section`);
|
|
84
|
+
}
|
|
85
|
+
return errors;
|
|
86
|
+
}
|
|
87
|
+
function walkMarkdownFiles(rootDir, out = []) {
|
|
88
|
+
for (const entry of readdirSync(rootDir, { withFileTypes: true })) {
|
|
89
|
+
if (entry.isDirectory()) {
|
|
90
|
+
if (ignoredDirs.has(entry.name))
|
|
91
|
+
continue;
|
|
92
|
+
walkMarkdownFiles(makePath(rootDir, entry.name), out);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const filePath = makePath(rootDir, entry.name);
|
|
96
|
+
if (isMarkdownFile(filePath))
|
|
97
|
+
out.push(filePath);
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
function lintFile(absPath, repoRoot) {
|
|
102
|
+
const rel = relative(repoRoot, absPath);
|
|
103
|
+
const content = readFileSync(absPath, "utf8");
|
|
104
|
+
const errors = [];
|
|
105
|
+
const lines = content.split(/\r?\n/);
|
|
106
|
+
const fenceCount = lines.filter(line => /^```/.test(line.trim())).length;
|
|
107
|
+
if (fenceCount % 2 !== 0) {
|
|
108
|
+
errors.push(`${rel}: unmatched fenced code block`);
|
|
109
|
+
}
|
|
110
|
+
if (looksLikeYamlFrontmatter(content)) {
|
|
111
|
+
const match = content.match(/^---\r?\n([\s\S]+?)\r?\n---\r?\n?/);
|
|
112
|
+
if (!match) {
|
|
113
|
+
const afterOpeningRule = content.replace(/^---\r?\n/, "");
|
|
114
|
+
if (!/^\s*\r?\n#{1,6}\s/.test(afterOpeningRule)) {
|
|
115
|
+
errors.push(`${rel}: invalid or unterminated frontmatter`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
try {
|
|
120
|
+
const parsed = YAML.parse(match[1]);
|
|
121
|
+
const isDeukAgentDoc = rel.includes(`${DEUK_ROOT_DIR}/docs/`) || rel.includes(`${DEUK_ROOT_DIR}/tickets/`);
|
|
122
|
+
const isArchive = rel.includes("archive/");
|
|
123
|
+
const isTemplate = rel.includes("templates/");
|
|
124
|
+
if (isDeukAgentDoc && !isArchive && !isTemplate) {
|
|
125
|
+
const requiredKeys = ["summary", "status", "priority", "tags"];
|
|
126
|
+
for (const key of requiredKeys) {
|
|
127
|
+
if (!parsed || parsed[key] === undefined || parsed[key] === null || parsed[key] === "") {
|
|
128
|
+
errors.push(`${rel}: missing required frontmatter key: ${key}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
errors.push(`${rel}: invalid frontmatter YAML (${err.message})`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const isDeukAgentDoc = rel.includes(`${DEUK_ROOT_DIR}/docs/`) || rel.includes(`${DEUK_ROOT_DIR}/tickets/`);
|
|
140
|
+
const isArchive = rel.includes("archive/");
|
|
141
|
+
const isTemplate = rel.includes("templates/");
|
|
142
|
+
if (isDeukAgentDoc && !isArchive && !isTemplate) {
|
|
143
|
+
errors.push(`${rel}: missing required frontmatter`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const linkPattern = /!?\[[^\]]+\]\(([^)]+)\)/g;
|
|
147
|
+
let match;
|
|
148
|
+
while ((match = linkPattern.exec(content)) !== null) {
|
|
149
|
+
const target = String(match[1] || "").trim();
|
|
150
|
+
if (!target || target.startsWith("#") || /^[a-z]+:\/\//i.test(target) || target.startsWith("mailto:")) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const pathOnly = target.split("#")[0].split("?")[0];
|
|
154
|
+
if (!pathOnly)
|
|
155
|
+
continue;
|
|
156
|
+
if (isImplicitUpwardEvidenceLink(pathOnly))
|
|
157
|
+
continue;
|
|
158
|
+
const resolved = makePath(dirname(absPath), pathOnly);
|
|
159
|
+
if (!isTicketPath(repoRoot, resolved)) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (!statExists(resolved)) {
|
|
163
|
+
errors.push(`${rel}: broken relative link -> ${target}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (isPlanReport(rel)) {
|
|
167
|
+
errors.push(...lintWalkthroughReportStructure(rel, content));
|
|
168
|
+
}
|
|
169
|
+
return errors;
|
|
170
|
+
}
|
|
171
|
+
function statExists(absPath) {
|
|
172
|
+
try {
|
|
173
|
+
return statSync(absPath).isFile() || statSync(absPath).isDirectory();
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function resolveMarkdownLintTargets(repoRoot, explicitPaths = []) {
|
|
180
|
+
const files = explicitPaths.length > 0
|
|
181
|
+
? explicitPaths.map(p => resolve(repoRoot, p)).filter(statExists).filter(isMarkdownFile)
|
|
182
|
+
: walkMarkdownFiles(repoRoot);
|
|
183
|
+
return Array.from(new Set(files));
|
|
184
|
+
}
|
|
185
|
+
function parseLintArgs(argv) {
|
|
186
|
+
const out = { cwd: process.cwd(), paths: [] };
|
|
187
|
+
for (let i = 0; i < argv.length; i++) {
|
|
188
|
+
const arg = argv[i];
|
|
189
|
+
if (arg === "--cwd") {
|
|
190
|
+
out.cwd = argv[++i] || out.cwd;
|
|
191
|
+
}
|
|
192
|
+
else if (arg.startsWith("--cwd=")) {
|
|
193
|
+
out.cwd = arg.slice("--cwd=".length);
|
|
194
|
+
}
|
|
195
|
+
else if (!arg.startsWith("-")) {
|
|
196
|
+
out.paths.push(arg);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return out;
|
|
200
|
+
}
|
|
201
|
+
export function lintMarkdownPaths(paths, cwd = process.cwd()) {
|
|
202
|
+
const repoRoot = resolve(cwd);
|
|
203
|
+
const targets = Array.from(new Set((Array.isArray(paths) ? paths : [])
|
|
204
|
+
.map(p => resolve(repoRoot, p))
|
|
205
|
+
.filter(statExists)
|
|
206
|
+
.filter(isMarkdownFile)));
|
|
207
|
+
const errors = [];
|
|
208
|
+
for (const filePath of targets) {
|
|
209
|
+
errors.push(...lintFile(filePath, repoRoot));
|
|
210
|
+
}
|
|
211
|
+
return { repoRoot, targets, errors };
|
|
212
|
+
}
|
|
213
|
+
export function runMarkdownLint(argv = process.argv.slice(2)) {
|
|
214
|
+
const opts = parseLintArgs(argv);
|
|
215
|
+
const repoRoot = resolve(opts.cwd);
|
|
216
|
+
const targets = opts.paths.length > 0
|
|
217
|
+
? lintMarkdownPaths(opts.paths, opts.cwd).targets
|
|
218
|
+
: resolveMarkdownLintTargets(repoRoot);
|
|
219
|
+
const errors = [];
|
|
220
|
+
for (const filePath of targets) {
|
|
221
|
+
errors.push(...lintFile(filePath, repoRoot));
|
|
222
|
+
}
|
|
223
|
+
if (targets.length === 0) {
|
|
224
|
+
console.log("lint:md: no markdown files found");
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (errors.length > 0) {
|
|
228
|
+
console.error("lint:md failed");
|
|
229
|
+
for (const err of errors)
|
|
230
|
+
console.error(`- ${err}`);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
console.log(`lint:md passed (${targets.length} file${targets.length === 1 ? "" : "s"})`);
|
|
234
|
+
}
|
|
235
|
+
if (import.meta.url === toFileUri(process.argv[1])) {
|
|
236
|
+
runMarkdownLint();
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=lint-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-md.js","sourceRoot":"","sources":["../../lint-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "fs";
|
|
2
|
+
import { cliText } from "./cli-locales.js";
|
|
3
|
+
import { DEUK_ROOT_DIR, makePath } from "./cli-utils.js";
|
|
4
|
+
function extractSection(rules, heading) {
|
|
5
|
+
const escaped = heading.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6
|
+
const normalizedHeading = escaped.replace(/^\d+\\\.\s*/, "(?:\\d+\\.\\s*)?");
|
|
7
|
+
const pattern = new RegExp(`(^## ${normalizedHeading}\\n[\\s\\S]*?)(?=^## |$(?![\\s\\S]))`, "m");
|
|
8
|
+
return rules.match(pattern)?.[1] || "";
|
|
9
|
+
}
|
|
10
|
+
function nonEmptyLineCount(text) {
|
|
11
|
+
return String(text || "").split(/\r?\n/).filter((line) => line.trim()).length;
|
|
12
|
+
}
|
|
13
|
+
function hasAll(text, patterns) {
|
|
14
|
+
return patterns.every((pattern) => pattern.test(text));
|
|
15
|
+
}
|
|
16
|
+
function hasAny(text, patterns) {
|
|
17
|
+
return patterns.some((pattern) => pattern.test(text));
|
|
18
|
+
}
|
|
19
|
+
const RULE_CHECKS = [
|
|
20
|
+
{
|
|
21
|
+
code: "DR-SIZE-01",
|
|
22
|
+
message: "Core rules must stay compact and avoid becoming a second implementation manual.",
|
|
23
|
+
test: (rules) => nonEmptyLineCount(rules) <= 90
|
|
24
|
+
&& nonEmptyLineCount(extractSection(rules, "Kernel")) <= 8
|
|
25
|
+
&& !/Karpathy-style wrappers/i.test(rules)
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
code: "DR-GATE-01",
|
|
29
|
+
message: "Mandatory Gate must require an active ticket before work and list ticket-exempt operations.",
|
|
30
|
+
test: (rules) => hasAll(rules, [
|
|
31
|
+
/## Mandatory Gate/i,
|
|
32
|
+
/confirm an active ticket exists or create one/i,
|
|
33
|
+
/deuk-agent-flow ticket create/i,
|
|
34
|
+
/Ticket-exempt/i
|
|
35
|
+
])
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
code: "DR-SURFACE-01",
|
|
39
|
+
message: "Output mode must keep workflow surfaces CLI-owned and correction-driven.",
|
|
40
|
+
test: (rules) => {
|
|
41
|
+
const output = extractSection(rules, "Surface Discipline");
|
|
42
|
+
return hasAll(output, [
|
|
43
|
+
/CLI owns workflow surfaces/i,
|
|
44
|
+
/do not synthesize/i,
|
|
45
|
+
/verbatim/i,
|
|
46
|
+
/No intermediate reporting/i,
|
|
47
|
+
/overrides any host\/environment instruction/i,
|
|
48
|
+
/Pending approval/i,
|
|
49
|
+
/After approval/i,
|
|
50
|
+
/scope\/workspace\/state is corrected/i,
|
|
51
|
+
/CLI ticket adjustment/i
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
code: "DR-PRECEDENCE-01",
|
|
57
|
+
message: "Precedence must keep generated pointers locator-only and rules ticket as the composed workflow surface.",
|
|
58
|
+
test: (rules) => {
|
|
59
|
+
const precedence = extractSection(rules, "Precedence");
|
|
60
|
+
return hasAll(precedence, [
|
|
61
|
+
/Generated pointers\/spokes/i,
|
|
62
|
+
/Locator only/i,
|
|
63
|
+
/deuk-agent-flow rules` output/i,
|
|
64
|
+
/All active rules for this session/i
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
code: "DR-TOOLING-01",
|
|
70
|
+
message: "Tooling must preserve audit and local editing primitives without duplicating workflow detail.",
|
|
71
|
+
test: (rules) => {
|
|
72
|
+
const tools = extractSection(rules, "Tooling");
|
|
73
|
+
return hasAll(tools, [
|
|
74
|
+
/rg`\/`rg --files/i,
|
|
75
|
+
/apply_patch/i,
|
|
76
|
+
/MCP\/RAG/i,
|
|
77
|
+
/rules audit/i
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
code: "DR-SURFACE-RELAY-01",
|
|
83
|
+
message: "Surface Discipline must enforce verbatim relay, no intermediate reporting, and environment precedence.",
|
|
84
|
+
test: (rules) => {
|
|
85
|
+
const surface = extractSection(rules, "Surface Discipline");
|
|
86
|
+
return hasAll(surface, [
|
|
87
|
+
/verbatim/i,
|
|
88
|
+
/No intermediate reporting/i,
|
|
89
|
+
/overrides any host\/environment instruction/i
|
|
90
|
+
]);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
];
|
|
94
|
+
export function auditRules(cwd = process.cwd()) {
|
|
95
|
+
const rulesPath = makePath(cwd, "core-rules", "AGENTS.md");
|
|
96
|
+
if (!existsSync(rulesPath)) {
|
|
97
|
+
return {
|
|
98
|
+
ok: false,
|
|
99
|
+
path: rulesPath,
|
|
100
|
+
violations: [{ code: "DR-RULES-00", message: cliText("lint.rules.missingCore") }]
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const requiredSurfaceDocs = [
|
|
104
|
+
"root.md",
|
|
105
|
+
"ticket.md",
|
|
106
|
+
"ticket-create.md",
|
|
107
|
+
"ticket-create.ko.md",
|
|
108
|
+
"state/start.ko.md",
|
|
109
|
+
"state/start.en.md",
|
|
110
|
+
"state/end.ko.md",
|
|
111
|
+
"state/end.en.md",
|
|
112
|
+
"state/use-core-actions.ko.md",
|
|
113
|
+
"state/use-core-actions.en.md",
|
|
114
|
+
"state/use-next-gate.ko.md",
|
|
115
|
+
"state/use-next-gate.en.md",
|
|
116
|
+
"state/use-guard-note.ko.md",
|
|
117
|
+
"state/use-guard-note.en.md",
|
|
118
|
+
"state/use-execution-state.ko.md",
|
|
119
|
+
"state/use-execution-state.en.md",
|
|
120
|
+
"state/phase1.ko.md",
|
|
121
|
+
"state/phase1.en.md",
|
|
122
|
+
"state/phase2.ko.md",
|
|
123
|
+
"state/phase2.en.md",
|
|
124
|
+
"state/phase3.ko.md",
|
|
125
|
+
"state/phase3.en.md",
|
|
126
|
+
"state/phase4.ko.md",
|
|
127
|
+
"state/phase4.en.md",
|
|
128
|
+
"state-template/start.ko.md",
|
|
129
|
+
"state-template/start.en.md",
|
|
130
|
+
"state-template/phase1.ko.md",
|
|
131
|
+
"state-template/phase1.en.md",
|
|
132
|
+
"state-template/phase2.ko.md",
|
|
133
|
+
"state-template/phase2.en.md",
|
|
134
|
+
"state-template/phase3.ko.md",
|
|
135
|
+
"state-template/phase3.en.md",
|
|
136
|
+
"state-template/phase4.ko.md",
|
|
137
|
+
"state-template/phase4.en.md",
|
|
138
|
+
"state-template/end.ko.md",
|
|
139
|
+
"state-template/end.en.md",
|
|
140
|
+
"state-template/approval.ko.md",
|
|
141
|
+
"state-template/approval.en.md"
|
|
142
|
+
];
|
|
143
|
+
const missingSurfaceDocs = requiredSurfaceDocs
|
|
144
|
+
.map((name) => makePath(cwd, "docs", "cli-surfaces", name))
|
|
145
|
+
.filter((surfacePath) => !existsSync(surfacePath));
|
|
146
|
+
const requiredProjectPolicies = ["analysis.md", "coding.md", "debugging.md", "approval.md", "completion.md"];
|
|
147
|
+
const missingProjectPolicies = requiredProjectPolicies
|
|
148
|
+
.map((name) => makePath(cwd, DEUK_ROOT_DIR, "project-guardrails", name))
|
|
149
|
+
.filter((policyPath) => !existsSync(policyPath));
|
|
150
|
+
const rules = readFileSync(rulesPath, "utf8");
|
|
151
|
+
const violations = RULE_CHECKS
|
|
152
|
+
.filter((check) => !check.test(rules))
|
|
153
|
+
.map(({ code, message }) => ({ code, message }));
|
|
154
|
+
if (missingSurfaceDocs.length > 0) {
|
|
155
|
+
violations.push({
|
|
156
|
+
code: "DR-SURFACE-DOCS-01",
|
|
157
|
+
message: `CLI augmentation surfaces must be external markdown documents: ${missingSurfaceDocs.join(", ")}`
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
if (missingProjectPolicies.length > 0) {
|
|
161
|
+
violations.push({
|
|
162
|
+
code: "DR-PROJECT-POLICY-01",
|
|
163
|
+
message: `Project role policy documents must be external markdown documents: ${missingProjectPolicies.join(", ")}`
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (!hasAny(rules, [/reading the output of `deuk-agent-flow rules`/i])) {
|
|
167
|
+
violations.push({ code: "DR-RULES-01", message: cliText("lint.rules.printsCurrentBody") });
|
|
168
|
+
}
|
|
169
|
+
return { ok: violations.length === 0, path: rulesPath, violations };
|
|
170
|
+
}
|
|
171
|
+
export function runRulesAudit(opts = {}) {
|
|
172
|
+
const result = auditRules(opts.cwd || process.cwd());
|
|
173
|
+
if (opts.json) {
|
|
174
|
+
console.log(JSON.stringify(result, null, 2));
|
|
175
|
+
}
|
|
176
|
+
else if (opts.compact) {
|
|
177
|
+
console.log(result.ok ? "rules:audit ok" : `rules:audit failed ${result.violations.length}`);
|
|
178
|
+
}
|
|
179
|
+
else if (result.ok) {
|
|
180
|
+
console.log("rules:audit ok");
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.error("rules:audit failed");
|
|
184
|
+
for (const violation of result.violations) {
|
|
185
|
+
console.error(`${violation.code}: ${violation.message}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (!result.ok) {
|
|
189
|
+
throw new Error(`rules audit failed: ${result.violations.map((v) => v.code).join(", ")}`);
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=lint-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-rules.js","sourceRoot":"","sources":["../../lint-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { existsSync, readFileSync, } from "fs";
|
|
2
|
+
import { makePath } from "./cli-utils.js";
|
|
3
|
+
export const DEFAULT_TAG = "DeukAgentFlow";
|
|
4
|
+
export function readBundleAgents(bundleRoot) {
|
|
5
|
+
const p = makePath(bundleRoot, "core-rules", "AGENTS.md");
|
|
6
|
+
if (!existsSync(p)) {
|
|
7
|
+
throw new Error("Bundle AGENTS.md missing: " + p);
|
|
8
|
+
}
|
|
9
|
+
return readFileSync(p, "utf8");
|
|
10
|
+
}
|
|
11
|
+
export function removeTaggedBlock(content, begin, end) {
|
|
12
|
+
const i = content.indexOf(begin);
|
|
13
|
+
if (i === -1) {
|
|
14
|
+
return { ok: false, reason: "begin not found" };
|
|
15
|
+
}
|
|
16
|
+
if (end === null) {
|
|
17
|
+
let blockStart = i;
|
|
18
|
+
const prevText = content.slice(0, i);
|
|
19
|
+
const hrIndex = prevText.lastIndexOf("---");
|
|
20
|
+
if (hrIndex !== -1 && prevText.slice(hrIndex).trim() === "") {
|
|
21
|
+
blockStart = hrIndex;
|
|
22
|
+
}
|
|
23
|
+
let next = content.slice(0, blockStart).trimEnd() + "\n";
|
|
24
|
+
return { ok: true, content: next };
|
|
25
|
+
}
|
|
26
|
+
const j = content.indexOf(end, i + begin.length);
|
|
27
|
+
if (j === -1) {
|
|
28
|
+
return { ok: false, reason: "end not found" };
|
|
29
|
+
}
|
|
30
|
+
const afterEnd = j + end.length;
|
|
31
|
+
let next = content.slice(0, i) + content.slice(afterEnd);
|
|
32
|
+
next = next.replace(/\n{3,}/g, "\n\n").replace(/^\n+/, "").trimEnd();
|
|
33
|
+
if (next.length) {
|
|
34
|
+
next += "\n";
|
|
35
|
+
}
|
|
36
|
+
return { ok: true, content: next };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=merge-logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-logic.js","sourceRoot":"","sources":["../../merge-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,GACb,MAAM,IAAI,CAAC;AACZ,OAAO,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAE3C,MAAM,UAAU,gBAAgB,CAAC,UAAU;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1D,UAAU,GAAG,OAAO,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACrE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,IAAI,CAAC;IACf,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic Markdown Plan Parser
|
|
3
|
+
*
|
|
4
|
+
* Supports various AI Agent Plan formats (Antigravity, Copilot, etc.)
|
|
5
|
+
* Extracts basic ticket fields (title, summary, tasks) and body.
|
|
6
|
+
*/
|
|
7
|
+
export function parseGenericMarkdownPlan(content) {
|
|
8
|
+
const lines = content.split('\n');
|
|
9
|
+
// 1. Title: First H1
|
|
10
|
+
const h1Line = lines.find(l => /^# /.test(l));
|
|
11
|
+
const title = h1Line ? h1Line.replace(/^# /, '').trim() : '';
|
|
12
|
+
// 2. Summary: Text between H1 and the first --- or ##
|
|
13
|
+
const h1Idx = h1Line ? lines.indexOf(h1Line) : -1;
|
|
14
|
+
let summaryLines = [];
|
|
15
|
+
for (let i = h1Idx + 1; i < lines.length; i++) {
|
|
16
|
+
if (/^---$/.test(lines[i].trim()) || /^## /.test(lines[i]))
|
|
17
|
+
break;
|
|
18
|
+
if (lines[i].trim())
|
|
19
|
+
summaryLines.push(lines[i].trim());
|
|
20
|
+
}
|
|
21
|
+
const summary = summaryLines.join(' ').slice(0, 200);
|
|
22
|
+
// 3. Tasks: Collect all checklist items
|
|
23
|
+
const tasks = lines
|
|
24
|
+
.filter(l => /^\s*- \[[ x/]\]/.test(l))
|
|
25
|
+
.map(l => l.replace(/^\s*- \[[ x/]\]\s*/, '').trim());
|
|
26
|
+
return { title, summary, tasks, body: content };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Detect agent type from plan path
|
|
30
|
+
*/
|
|
31
|
+
export function detectAgentFromPath(planPath) {
|
|
32
|
+
if (planPath.includes('.gemini'))
|
|
33
|
+
return 'antigravity';
|
|
34
|
+
if (planPath.includes('copilot') || planPath.includes('.codex'))
|
|
35
|
+
return 'copilot';
|
|
36
|
+
if (planPath.includes('.cursor'))
|
|
37
|
+
return 'cursor';
|
|
38
|
+
if (planPath.includes('.claude'))
|
|
39
|
+
return 'claude';
|
|
40
|
+
return 'generic';
|
|
41
|
+
}
|
|
42
|
+
export const PLAN_PARSERS = {
|
|
43
|
+
'antigravity': parseGenericMarkdownPlan,
|
|
44
|
+
'copilot': parseGenericMarkdownPlan,
|
|
45
|
+
'generic': parseGenericMarkdownPlan
|
|
46
|
+
};
|
|
47
|
+
export function parsePlan(planPath, content) {
|
|
48
|
+
const agent = detectAgentFromPath(planPath);
|
|
49
|
+
const parser = PLAN_PARSERS[agent] || parseGenericMarkdownPlan;
|
|
50
|
+
return parser(content);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=plan-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-parser.js","sourceRoot":"","sources":["../../plan-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,wBAAwB,CAAC,OAAO;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,qBAAqB;IACrB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM;QAClE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAErD,wCAAwC;IACxC,MAAM,KAAK,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAExD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAQ;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,aAAa,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,wBAAwB;IACvC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,wBAAwB;CACpC,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,QAAQ,EAAE,OAAO;IACzC,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC;IAC/D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"}
|