deuk-agent-flow 5.0.2 → 5.0.7

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.
Files changed (102) hide show
  1. package/CHANGELOG.ko.md +45 -0
  2. package/CHANGELOG.md +48 -0
  3. package/bundled/deuk-agent-flow.vsix +0 -0
  4. package/core-rules/AGENTS.md +5 -5
  5. package/package.json +20 -2
  6. package/scripts/bundle-vscode-vsix.ts +1 -1
  7. package/scripts/cli-args.ts +46 -1
  8. package/scripts/cli-context-commands.ts +35 -0
  9. package/scripts/cli-init-claude.ts +179 -0
  10. package/scripts/cli-init-commands.ts +21 -8
  11. package/scripts/cli-init-core.ts +89 -0
  12. package/scripts/cli-init-instructions.ts +489 -0
  13. package/scripts/cli-init-migrate.ts +504 -0
  14. package/scripts/cli-init-workspace.ts +63 -0
  15. package/scripts/cli-locales.ts +85 -0
  16. package/scripts/cli-skill-commands.ts +3 -1
  17. package/scripts/cli-ticket-commands.ts +68 -2
  18. package/scripts/cli-ticket-docmeta.ts +103 -0
  19. package/scripts/cli-ticket-document.ts +153 -0
  20. package/scripts/cli-ticket-evidence.ts +312 -0
  21. package/scripts/cli-ticket-home.ts +449 -0
  22. package/scripts/cli-ticket-index.ts +8 -0
  23. package/scripts/cli-ticket-scan.ts +102 -0
  24. package/scripts/cli-ticket-surface.ts +56 -0
  25. package/scripts/cli.ts +10 -1
  26. package/scripts/oss-prepack.js +32 -0
  27. package/scripts/out/scripts/bundle-vscode-vsix.js +68 -0
  28. package/scripts/out/scripts/bundle-vscode-vsix.js.map +1 -0
  29. package/scripts/out/scripts/cli-args.js +411 -0
  30. package/scripts/out/scripts/cli-args.js.map +1 -0
  31. package/scripts/out/scripts/cli-context-commands.js +31 -0
  32. package/scripts/out/scripts/cli-context-commands.js.map +1 -0
  33. package/scripts/out/scripts/cli-init-claude.js +176 -0
  34. package/scripts/out/scripts/cli-init-claude.js.map +1 -0
  35. package/scripts/out/scripts/cli-init-commands.js +98 -0
  36. package/scripts/out/scripts/cli-init-commands.js.map +1 -0
  37. package/scripts/out/scripts/cli-init-core.js +89 -0
  38. package/scripts/out/scripts/cli-init-core.js.map +1 -0
  39. package/scripts/out/scripts/cli-init-instructions.js +460 -0
  40. package/scripts/out/scripts/cli-init-instructions.js.map +1 -0
  41. package/scripts/out/scripts/cli-init-logic.js +41 -0
  42. package/scripts/out/scripts/cli-init-logic.js.map +1 -0
  43. package/scripts/out/scripts/cli-init-migrate.js +497 -0
  44. package/scripts/out/scripts/cli-init-migrate.js.map +1 -0
  45. package/scripts/out/scripts/cli-init-workspace.js +57 -0
  46. package/scripts/out/scripts/cli-init-workspace.js.map +1 -0
  47. package/scripts/out/scripts/cli-locales.js +83 -0
  48. package/scripts/out/scripts/cli-locales.js.map +1 -0
  49. package/scripts/out/scripts/cli-prompts.js +101 -0
  50. package/scripts/out/scripts/cli-prompts.js.map +1 -0
  51. package/scripts/out/scripts/cli-rule-compiler.js +121 -0
  52. package/scripts/out/scripts/cli-rule-compiler.js.map +1 -0
  53. package/scripts/out/scripts/cli-skill-commands.js +708 -0
  54. package/scripts/out/scripts/cli-skill-commands.js.map +1 -0
  55. package/scripts/out/scripts/cli-telemetry-commands.js +604 -0
  56. package/scripts/out/scripts/cli-telemetry-commands.js.map +1 -0
  57. package/scripts/out/scripts/cli-ticket-command-shared.js +2 -0
  58. package/scripts/out/scripts/cli-ticket-command-shared.js.map +1 -0
  59. package/scripts/out/scripts/cli-ticket-commands.js +3538 -0
  60. package/scripts/out/scripts/cli-ticket-commands.js.map +1 -0
  61. package/scripts/out/scripts/cli-ticket-docmeta.js +90 -0
  62. package/scripts/out/scripts/cli-ticket-docmeta.js.map +1 -0
  63. package/scripts/out/scripts/cli-ticket-document.js +121 -0
  64. package/scripts/out/scripts/cli-ticket-document.js.map +1 -0
  65. package/scripts/out/scripts/cli-ticket-evidence.js +286 -0
  66. package/scripts/out/scripts/cli-ticket-evidence.js.map +1 -0
  67. package/scripts/out/scripts/cli-ticket-home.js +440 -0
  68. package/scripts/out/scripts/cli-ticket-home.js.map +1 -0
  69. package/scripts/out/scripts/cli-ticket-index.js +280 -0
  70. package/scripts/out/scripts/cli-ticket-index.js.map +1 -0
  71. package/scripts/out/scripts/cli-ticket-migration.js +261 -0
  72. package/scripts/out/scripts/cli-ticket-migration.js.map +1 -0
  73. package/scripts/out/scripts/cli-ticket-parser.js +90 -0
  74. package/scripts/out/scripts/cli-ticket-parser.js.map +1 -0
  75. package/scripts/out/scripts/cli-ticket-scan.js +93 -0
  76. package/scripts/out/scripts/cli-ticket-scan.js.map +1 -0
  77. package/scripts/out/scripts/cli-ticket-surface.js +53 -0
  78. package/scripts/out/scripts/cli-ticket-surface.js.map +1 -0
  79. package/scripts/out/scripts/cli-usage-commands.js +310 -0
  80. package/scripts/out/scripts/cli-usage-commands.js.map +1 -0
  81. package/scripts/out/scripts/cli-utils.js +1544 -0
  82. package/scripts/out/scripts/cli-utils.js.map +1 -0
  83. package/scripts/out/scripts/cli.js +705 -0
  84. package/scripts/out/scripts/cli.js.map +1 -0
  85. package/scripts/out/scripts/lint-md.js +238 -0
  86. package/scripts/out/scripts/lint-md.js.map +1 -0
  87. package/scripts/out/scripts/lint-rules.js +193 -0
  88. package/scripts/out/scripts/lint-rules.js.map +1 -0
  89. package/scripts/out/scripts/merge-logic.js +38 -0
  90. package/scripts/out/scripts/merge-logic.js.map +1 -0
  91. package/scripts/out/scripts/plan-parser.js +52 -0
  92. package/scripts/out/scripts/plan-parser.js.map +1 -0
  93. package/scripts/out/scripts/ticket-machine.js +94 -0
  94. package/scripts/out/scripts/ticket-machine.js.map +1 -0
  95. package/scripts/out/scripts/ticket-workflow.js +498 -0
  96. package/scripts/out/scripts/ticket-workflow.js.map +1 -0
  97. package/scripts/ticket-machine.ts +99 -0
  98. package/scripts/ticket-workflow.ts +544 -0
  99. package/templates/skills/role-closer/SKILL.md +27 -0
  100. package/templates/skills/role-implementer/SKILL.md +30 -0
  101. package/templates/skills/role-planner/SKILL.md +29 -0
  102. 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"}