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,286 @@
1
+ import { toSnakeCaseKey } from "./cli-utils.js";
2
+ export function hasPlaceholderTokens(text) {
3
+ const lines = String(text || "")
4
+ .split("\n")
5
+ .map(line => line.trim().toLowerCase())
6
+ .filter(Boolean);
7
+ return lines.some(line => {
8
+ const normalized = line
9
+ .replace(/^[-*]\s+/, "")
10
+ .replace(/^\d+\.\s+/, "")
11
+ .trim();
12
+ return /^\[(?:add|fill)[^\]]*\]$/.test(normalized)
13
+ || /^<[^>]*(?:placeholder|todo|tbd|fill|add)[^>]*>$/.test(normalized)
14
+ || /^(?:placeholder|todo|tbd)$/.test(normalized);
15
+ });
16
+ }
17
+ export const ANALYSIS_DESIGN_SECTION_REQUIREMENTS = [
18
+ {
19
+ section: "Analysis",
20
+ reason: "analysis_missing",
21
+ scaffolds: [
22
+ "Record root-cause analysis, relevant file:line evidence, and hypotheses here."
23
+ ]
24
+ },
25
+ {
26
+ section: "Direction",
27
+ reason: "direction_missing",
28
+ scaffolds: [
29
+ "Record the proposed fix direction or follow-up design path."
30
+ ]
31
+ }
32
+ ];
33
+ export const REQUIRED_PHASE1_SECTIONS = [
34
+ "Scope & Approval",
35
+ "Plan",
36
+ "Analysis",
37
+ "Direction"
38
+ ];
39
+ export const REQUIRED_APC_MARKERS = [];
40
+ const PHASE1_DATA_SECTIONS = [
41
+ "Plan",
42
+ "Analysis",
43
+ "Direction"
44
+ ];
45
+ function dataSectionsForType(_type = "") {
46
+ return [...PHASE1_DATA_SECTIONS];
47
+ }
48
+ export function resolveTicketType(_opts) {
49
+ return "standard";
50
+ }
51
+ const FOLLOW_UP_DECISION_NO_FOLLOW_UP_PATTERNS = [
52
+ /\bno[- ]follow[- ]up\b/i,
53
+ /\bfollow[- ]up\s*:\s*none\b/i,
54
+ /\bno further action\b/i,
55
+ /\bnone required\b/i,
56
+ /후속(?:\s+작업)?\s*(?:없음|불필요)/,
57
+ /추가(?:\s+작업)?\s*(?:없음|불필요)/
58
+ ];
59
+ export function parseMarkdownH2Sections(content) {
60
+ const lines = String(content || "").split("\n");
61
+ const sections = new Map();
62
+ let currentHeading = "";
63
+ let buffer = [];
64
+ const flush = () => {
65
+ if (!currentHeading)
66
+ return;
67
+ sections.set(currentHeading, buffer.join("\n").trim());
68
+ };
69
+ for (const line of lines) {
70
+ const headingMatch = line.match(/^##\s+(.+?)\s*$/);
71
+ if (headingMatch) {
72
+ flush();
73
+ currentHeading = headingMatch[1].trim();
74
+ buffer = [];
75
+ continue;
76
+ }
77
+ if (currentHeading) {
78
+ buffer.push(line);
79
+ }
80
+ }
81
+ flush();
82
+ return sections;
83
+ }
84
+ const PHASE1_HEADING_ALIASES = new Map([
85
+ ["apc", "Scope & Approval"],
86
+ ["agent permission contract", "Scope & Approval"],
87
+ ["agent permission contract (apc)", "Scope & Approval"],
88
+ ["scope", "Scope & Approval"],
89
+ ["compact plan", "Plan"],
90
+ ["problem analysis", "Analysis"],
91
+ ["source observations", "Analysis"],
92
+ ["cause hypotheses", "Analysis"],
93
+ ["audit evidence", "Analysis"],
94
+ ["improvement direction", "Direction"],
95
+ ...REQUIRED_PHASE1_SECTIONS.map(section => [section.toLowerCase(), section])
96
+ ]);
97
+ export function normalizePhase1PlanBodyHeadings(body) {
98
+ return String(body || "").split("\n").map((line) => {
99
+ const match = line.match(/^\s{0,3}#{1,6}\s+(.+?)\s*#*\s*$/);
100
+ if (!match)
101
+ return line;
102
+ const normalized = PHASE1_HEADING_ALIASES.get(match[1].trim().toLowerCase());
103
+ return normalized ? `## ${normalized}` : line;
104
+ }).join("\n");
105
+ }
106
+ export function extractMarkdownSection(content, heading) {
107
+ return parseMarkdownH2Sections(content).get(String(heading || "").trim()) || "";
108
+ }
109
+ function extractMarkdownSectionByAliases(content, aliases) {
110
+ const sections = parseMarkdownH2Sections(content);
111
+ for (const alias of aliases) {
112
+ const value = sections.get(String(alias || "").trim());
113
+ if (value !== undefined)
114
+ return value;
115
+ }
116
+ return "";
117
+ }
118
+ function hasSubstantiveSectionContent(text, scaffolds = []) {
119
+ const src = String(text || "").trim();
120
+ if (!src || hasPlaceholderTokens(src))
121
+ return false;
122
+ const normalized = src.replace(/\s+/g, " ");
123
+ return !scaffolds.some(phrase => normalized.includes(phrase));
124
+ }
125
+ function hasApcMarker(text, marker) {
126
+ const escapedMarker = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
127
+ const markerPattern = new RegExp(`^\\s*(?:#{1,6}\\s+)?${escapedMarker}(?:\\s|$)`);
128
+ return String(text || "").split("\n").some(line => markerPattern.test(line));
129
+ }
130
+ function getApcContentWithoutMarkers(text) {
131
+ return String(text || "")
132
+ .split("\n")
133
+ .map(line => {
134
+ for (const { marker } of REQUIRED_APC_MARKERS) {
135
+ const escapedMarker = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
136
+ const markerPattern = new RegExp(`^\\s*(?:#{1,6}\\s+)?${escapedMarker}\\s*`);
137
+ if (markerPattern.test(line))
138
+ return line.replace(markerPattern, "");
139
+ }
140
+ return line;
141
+ })
142
+ .join("\n")
143
+ .trim();
144
+ }
145
+ function getMissingApcFields(text) {
146
+ return REQUIRED_APC_MARKERS
147
+ .filter(({ marker }) => !hasApcMarker(text, marker))
148
+ .map(field => field.name);
149
+ }
150
+ export function getPhase1PlanBodyReasons(body, opts = {}) {
151
+ const content = String(body || "");
152
+ const sections = parseMarkdownH2Sections(content);
153
+ const reasons = [];
154
+ for (const sectionName of ["Scope & Approval", ...dataSectionsForType()]) {
155
+ const sectionKey = toSnakeCaseKey(sectionName);
156
+ if (!sections.has(sectionName)) {
157
+ reasons.push(`${sectionKey}_missing`);
158
+ continue;
159
+ }
160
+ if (!hasSubstantiveSectionContent(sections.get(sectionName), [])) {
161
+ reasons.push(`${sectionKey}_incomplete`);
162
+ }
163
+ }
164
+ return reasons;
165
+ }
166
+ export function phase1SectionsForType(_type = "") {
167
+ return ["Agent Permission Contract (APC)", ...dataSectionsForType()];
168
+ }
169
+ export function getAnalysisDesignIncompleteReasons(meta, content) {
170
+ const reasons = [];
171
+ for (const requirement of ANALYSIS_DESIGN_SECTION_REQUIREMENTS) {
172
+ if (!hasSubstantiveSectionContent(extractMarkdownSection(content, requirement.section), requirement.scaffolds)) {
173
+ reasons.push(requirement.reason);
174
+ }
175
+ }
176
+ return reasons;
177
+ }
178
+ export function hasSubstantiveFollowUpDecision(content) {
179
+ return hasSubstantiveSectionContent(extractMarkdownSection(content, "Follow-up Decision"), []);
180
+ }
181
+ export function followUpDecisionMeansNoFollowUp(content) {
182
+ const text = extractMarkdownSection(content, "Follow-up Decision");
183
+ if (!hasSubstantiveSectionContent(text, []))
184
+ return false;
185
+ return FOLLOW_UP_DECISION_NO_FOLLOW_UP_PATTERNS.some(pattern => pattern.test(text));
186
+ }
187
+ export function hasTicketCompletionEvidence(content) {
188
+ return hasSubstantiveSectionContent(extractMarkdownSection(content, "Completion Report"), [])
189
+ || hasSubstantiveSectionContent(extractMarkdownSection(content, "Verification Outcome"), [])
190
+ || followUpDecisionMeansNoFollowUp(content);
191
+ }
192
+ const PHASE2_EXECUTION_SLOT_HEADINGS = [
193
+ "실행 슬롯",
194
+ "Execution Slots",
195
+ "Execution",
196
+ ];
197
+ const PHASE2_EXECUTION_SLOT_FIELDS = [
198
+ /files\s+changed\s*:/i,
199
+ /commands?\s+run\s*:/i,
200
+ /interim\s+evidence\s*:/i,
201
+ /approved\s+scope\s*:/i,
202
+ ];
203
+ export function hasPhase2ExecutionEvidence(content) {
204
+ const body = String(content || "");
205
+ // Check any phase2 execution slot heading section has non-empty content
206
+ for (const heading of PHASE2_EXECUTION_SLOT_HEADINGS) {
207
+ const section = extractMarkdownSection(body, heading);
208
+ if (section) {
209
+ const hasFilledField = PHASE2_EXECUTION_SLOT_FIELDS.some(pattern => {
210
+ const match = section.match(new RegExp(pattern.source + "\\s*(.+)", "i"));
211
+ return match && match[1] && match[1].trim().length > 0;
212
+ });
213
+ if (hasFilledField)
214
+ return true;
215
+ }
216
+ }
217
+ // Fallback: any substantive content in Analysis or Direction (for bug-fix style tickets)
218
+ return hasSubstantiveSectionContent(extractMarkdownSection(body, "Analysis"), [])
219
+ || hasSubstantiveSectionContent(extractMarkdownSection(body, "Problem Analysis"), []);
220
+ }
221
+ // Compact, .md-aware slot status so `ticket use` shows what is already filled
222
+ // vs. still empty, plus affected files — preventing the agent from re-reading the
223
+ // ticket .md / find-grepping the tree to reconstruct context. Output stays terse.
224
+ const SLOT_STATUS_SECTIONS_BY_PHASE = {
225
+ 1: ["Scope & Approval", "Plan", "Analysis", "Direction"],
226
+ 2: ["Scope & Approval", "Plan", "Analysis", "Direction"],
227
+ 3: ["Analysis", "Direction", "Execution Result", "Verification"],
228
+ 4: ["Execution Result", "Verification", "Residual Risk", "Follow-up Decision"]
229
+ };
230
+ // Pull file-ish tokens (path/with/slashes or name.ext) from the sections most
231
+ // likely to record affected files, capped so the line never sprawls.
232
+ function extractAffectedFiles(content, limit = 6) {
233
+ const src = [
234
+ extractMarkdownSection(content, "Execution Result"),
235
+ extractMarkdownSection(content, "Scope & Approval"),
236
+ extractMarkdownSection(content, "Plan")
237
+ ].join("\n");
238
+ const matches = src.match(/[\w./-]+\.[A-Za-z][\w]{0,4}\b/g) || [];
239
+ const seen = [];
240
+ for (const m of matches) {
241
+ const f = m.replace(/^[-*\s]+/, "");
242
+ if (!seen.includes(f))
243
+ seen.push(f);
244
+ if (seen.length >= limit)
245
+ break;
246
+ }
247
+ return seen;
248
+ }
249
+ export function buildSlotStatusSummary(content, phase = 2) {
250
+ const sections = SLOT_STATUS_SECTIONS_BY_PHASE[phase >= 4 ? 4 : phase] || SLOT_STATUS_SECTIONS_BY_PHASE[2];
251
+ const filled = [];
252
+ const empty = [];
253
+ for (const name of sections) {
254
+ if (hasSubstantiveSectionContent(extractMarkdownSection(content, name), []))
255
+ filled.push(name);
256
+ else
257
+ empty.push(name);
258
+ }
259
+ const files = extractAffectedFiles(content);
260
+ const lines = [];
261
+ lines.push(`[filled] ${filled.length ? filled.join(" · ") : "(none)"}`);
262
+ lines.push(`[empty] ${empty.length ? empty.join(" · ") : "(none)"}`);
263
+ if (files.length)
264
+ lines.push(`[files] ${files.join(", ")}`);
265
+ return lines.join("\n");
266
+ }
267
+ export function getCloseWorkflowReasons(meta, content) {
268
+ const reasons = [];
269
+ const analysisScaffolds = ANALYSIS_DESIGN_SECTION_REQUIREMENTS[0].scaffolds;
270
+ const directionScaffolds = ANALYSIS_DESIGN_SECTION_REQUIREMENTS[1].scaffolds;
271
+ // Accept both canonical ("Analysis") and legacy ("Problem Analysis") heading names.
272
+ const analysisText = extractMarkdownSection(content, "Analysis")
273
+ || extractMarkdownSection(content, "Problem Analysis");
274
+ if (!hasSubstantiveSectionContent(analysisText, analysisScaffolds)) {
275
+ reasons.push("problem_analysis_missing");
276
+ }
277
+ // Accept both canonical ("Direction") and legacy ("Improvement Direction") heading names.
278
+ const directionText = extractMarkdownSection(content, "Direction")
279
+ || extractMarkdownSection(content, "Improvement Direction");
280
+ if (!hasSubstantiveSectionContent(directionText, directionScaffolds)
281
+ && !hasSubstantiveFollowUpDecision(content)) {
282
+ reasons.push("follow_up_decision_missing");
283
+ }
284
+ return reasons;
285
+ }
286
+ //# sourceMappingURL=cli-ticket-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-ticket-evidence.js","sourceRoot":"","sources":["../../cli-ticket-evidence.ts"],"names":[],"mappings":"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"}