@jakkrichm/create-nexus-devflow 2.0.25 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -8
- package/dist/bin/create-nexus-devflow.d.ts +22 -1
- package/dist/bin/create-nexus-devflow.js +658 -11
- package/dist/bin/create-nexus-devflow.js.map +1 -1
- package/dist/lib/branch-context.d.ts +39 -0
- package/dist/lib/branch-context.js +196 -0
- package/dist/lib/branch-context.js.map +1 -0
- package/dist/lib/code-graph.d.ts +30 -0
- package/dist/lib/code-graph.js +209 -0
- package/dist/lib/code-graph.js.map +1 -0
- package/dist/lib/command-catalog.d.ts +11 -0
- package/dist/lib/command-catalog.js +63 -0
- package/dist/lib/command-catalog.js.map +1 -0
- package/dist/lib/context-slicer.d.ts +31 -0
- package/dist/lib/context-slicer.js +234 -0
- package/dist/lib/context-slicer.js.map +1 -0
- package/dist/lib/current-work.js +97 -49
- package/dist/lib/current-work.js.map +1 -1
- package/dist/lib/dashboard-page.d.ts +2 -0
- package/dist/lib/dashboard-page.js +285 -0
- package/dist/lib/dashboard-page.js.map +1 -0
- package/dist/lib/dashboard-snapshot.d.ts +62 -0
- package/dist/lib/dashboard-snapshot.js +114 -0
- package/dist/lib/dashboard-snapshot.js.map +1 -0
- package/dist/lib/dashboard.d.ts +2 -0
- package/dist/lib/dashboard.js +398 -8
- package/dist/lib/dashboard.js.map +1 -1
- package/dist/lib/discoveries.d.ts +19 -0
- package/dist/lib/discoveries.js +81 -0
- package/dist/lib/discoveries.js.map +1 -0
- package/dist/lib/doctor.d.ts +26 -0
- package/dist/lib/doctor.js +474 -0
- package/dist/lib/doctor.js.map +1 -0
- package/dist/lib/drift-reconciler.d.ts +38 -0
- package/dist/lib/drift-reconciler.js +155 -0
- package/dist/lib/drift-reconciler.js.map +1 -0
- package/dist/lib/findings.d.ts +26 -2
- package/dist/lib/findings.js +165 -1
- package/dist/lib/findings.js.map +1 -1
- package/dist/lib/gatekeeper.d.ts +20 -0
- package/dist/lib/gatekeeper.js +106 -0
- package/dist/lib/gatekeeper.js.map +1 -0
- package/dist/lib/git-hooks.d.ts +16 -0
- package/dist/lib/git-hooks.js +103 -0
- package/dist/lib/git-hooks.js.map +1 -0
- package/dist/lib/history.d.ts +6 -1
- package/dist/lib/history.js +98 -11
- package/dist/lib/history.js.map +1 -1
- package/dist/lib/ide-extension.d.ts +38 -0
- package/dist/lib/ide-extension.js +61 -0
- package/dist/lib/ide-extension.js.map +1 -0
- package/dist/lib/ideas.d.ts +26 -0
- package/dist/lib/ideas.js +179 -0
- package/dist/lib/ideas.js.map +1 -0
- package/dist/lib/mcp.d.ts +36 -0
- package/dist/lib/mcp.js +653 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/status.d.ts +3 -1
- package/dist/lib/status.js +60 -6
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/swarm-orchestrator.d.ts +31 -0
- package/dist/lib/swarm-orchestrator.js +134 -0
- package/dist/lib/swarm-orchestrator.js.map +1 -0
- package/dist/lib/update.js +2 -2
- package/dist/lib/update.js.map +1 -1
- package/dist/lib/version-check.d.ts +22 -0
- package/dist/lib/version-check.js +59 -0
- package/dist/lib/version-check.js.map +1 -0
- package/dist/lib/webview-studio.d.ts +8 -0
- package/dist/lib/webview-studio.js +463 -0
- package/dist/lib/webview-studio.js.map +1 -0
- package/dist/lib/workflow-state.d.ts +23 -0
- package/dist/lib/workflow-state.js +128 -0
- package/dist/lib/workflow-state.js.map +1 -0
- package/dist/scripts/prepare-template.js +3 -3
- package/package.json +1 -1
- package/template/{.claude/skills/00-discover → .agents/skills/00-explore}/SKILL.md +10 -10
- package/template/.agents/skills/10-define/SKILL.md +4 -4
- package/template/.agents/skills/20-spec/SKILL.md +2 -3
- package/template/.agents/skills/30-plan/SKILL.md +2 -3
- package/template/.agents/skills/40-execute/SKILL.md +2 -2
- package/template/.agents/skills/50-verify/SKILL.md +2 -2
- package/template/.agents/skills/60-report/SKILL.md +3 -3
- package/template/{.claude/skills/70-release → .agents/skills/70-deliver}/SKILL.md +7 -13
- package/template/.agents/skills/adopt/SKILL.md +136 -73
- package/template/.agents/skills/audit/SKILL.md +275 -0
- package/template/.agents/skills/autopilot/SKILL.md +228 -147
- package/template/.agents/skills/brainstorm/SKILL.md +3 -3
- package/template/.agents/skills/brief/SKILL.md +74 -51
- package/template/.agents/skills/check/SKILL.md +96 -76
- package/template/.agents/skills/ci/SKILL.md +140 -61
- package/template/.agents/skills/complete/SKILL.md +156 -101
- package/template/.agents/skills/convert-any-to-md/SKILL.md +2 -2
- package/template/.agents/skills/debug/SKILL.md +124 -49
- package/template/.agents/skills/devflow/SKILL.md +16 -10
- package/template/.agents/skills/discovery/SKILL.md +166 -0
- package/template/.agents/skills/doctor/SKILL.md +188 -72
- package/template/.agents/skills/feature/SKILL.md +195 -102
- package/template/.agents/skills/fix/SKILL.md +41 -90
- package/template/.agents/skills/idea/SKILL.md +3 -3
- package/template/.agents/skills/implement/SKILL.md +189 -46
- package/template/.agents/skills/onboard/SKILL.md +215 -85
- package/template/.agents/skills/overview/SKILL.md +51 -85
- package/template/.agents/skills/prototype/SKILL.md +82 -27
- package/template/.agents/skills/release/SKILL.md +160 -0
- package/template/.agents/skills/report-html/SKILL.md +2 -2
- package/template/.agents/skills/rollback/SKILL.md +123 -77
- package/template/.agents/skills/status/SKILL.md +109 -0
- package/template/.agents/skills/test/SKILL.md +2 -2
- package/template/.agents/skills/tests/SKILL.md +126 -0
- package/template/.agents/skills/try/SKILL.md +77 -65
- package/template/{.agents/skills/00-discover → .claude/skills/00-explore}/SKILL.md +9 -9
- package/template/.claude/skills/10-define/SKILL.md +2 -2
- package/template/.claude/skills/20-spec/SKILL.md +1 -1
- package/template/.claude/skills/30-plan/SKILL.md +1 -1
- package/template/.claude/skills/60-report/SKILL.md +1 -1
- package/template/{.agents/skills/70-release → .claude/skills/70-deliver}/SKILL.md +6 -12
- package/template/.claude/skills/adopt/SKILL.md +2 -2
- package/template/.claude/skills/audit/SKILL.md +141 -0
- package/template/.claude/skills/autopilot/SKILL.md +74 -52
- package/template/.claude/skills/brief/SKILL.md +67 -45
- package/template/.claude/skills/ci/SKILL.md +1 -1
- package/template/.claude/skills/complete/SKILL.md +1 -1
- package/template/.claude/skills/debug/SKILL.md +1 -1
- package/template/.claude/skills/devflow/SKILL.md +7 -7
- package/template/.claude/skills/discovery/SKILL.md +145 -0
- package/template/.claude/skills/doctor/SKILL.md +1 -1
- package/template/.claude/skills/feature/SKILL.md +67 -18
- package/template/.claude/skills/fix/SKILL.md +1 -1
- package/template/.claude/skills/idea/SKILL.md +2 -2
- package/template/.claude/skills/onboard/SKILL.md +3 -3
- package/template/.claude/skills/overview/SKILL.md +39 -88
- package/template/.claude/skills/prototype/SKILL.md +1 -1
- package/template/.claude/skills/release/SKILL.md +171 -0
- package/template/.claude/skills/rollback/SKILL.md +2 -2
- package/template/AGENTS.md +5 -5
- package/template/devflow/build-plan.md +62 -0
- package/template/devflow/context/ai-interaction.md +4 -4
- package/template/devflow/context/coding-standards.md +3 -3
- package/template/devflow/context/current-stage.md +1 -1
- package/template/devflow/context/findings.md +1 -1
- package/template/devflow/history/HISTORY.md +2 -2
- package/template/devflow/project-plan.md +79 -0
- package/template/devflow/reference/mockup.html +476 -0
- package/template/devflow/reference/project-overview-template.md +39 -0
- package/template/devflow/reference/running-id-contract.md +24 -2
- package/template/devflow/reference/studio.html +504 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type CommandFamily = "fast" | "deep" | "companion";
|
|
2
|
+
interface CommandCatalogItem {
|
|
3
|
+
name: string;
|
|
4
|
+
command: string;
|
|
5
|
+
description: string;
|
|
6
|
+
family: CommandFamily;
|
|
7
|
+
}
|
|
8
|
+
declare function readCommandCatalog(projectRoot: string): Promise<CommandCatalogItem[]>;
|
|
9
|
+
declare function readSkillDescription(projectRoot: string, name: string): Promise<string | null>;
|
|
10
|
+
export { readCommandCatalog, readSkillDescription };
|
|
11
|
+
export type { CommandCatalogItem, CommandFamily };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { readManifest } from "./update.js";
|
|
4
|
+
const FALLBACK_DESCRIPTIONS = {
|
|
5
|
+
devflow: "Inspect workflow state and route the request to the right next command.",
|
|
6
|
+
doctor: "Run a read-only health check for setup, scripts, adapters, and workflow drift.",
|
|
7
|
+
overview: "Compile repository plans and context into the living project overview.",
|
|
8
|
+
idea: "Capture and enrich a new idea in the centralized Idea Inbox.",
|
|
9
|
+
debug: "Investigate a bug and establish its root cause before implementation.",
|
|
10
|
+
brief: "Preview scope, dependencies, risks, and likely size before creating a run.",
|
|
11
|
+
onboard: "Detect the stack and establish baseline context for a fresh project.",
|
|
12
|
+
adopt: "Survey an existing codebase and bootstrap DevFlow context.",
|
|
13
|
+
try: "Guide a human through manual QA steps and expected results.",
|
|
14
|
+
rollback: "Plan a safe reversal with dependency and regression risk analysis.",
|
|
15
|
+
ci: "Set up project CI verification workflows.",
|
|
16
|
+
test: "Inspect test suites and verify test runner configuration.",
|
|
17
|
+
autopilot: "Run one bounded implementation and verification loop.",
|
|
18
|
+
prototype: "Create a disposable UI mockup before production implementation.",
|
|
19
|
+
"report-html": "Generate the optional standalone interactive HTML report."
|
|
20
|
+
};
|
|
21
|
+
async function readCommandCatalog(projectRoot) {
|
|
22
|
+
const manifest = await readManifest(projectRoot);
|
|
23
|
+
const fast = manifest?.lifecycle.fastTrackStages || ["feature", "fix", "implement", "check", "complete"];
|
|
24
|
+
const deep = manifest?.lifecycle.mainlineStages || ["00-explore", "10-define", "20-spec", "30-plan", "40-execute", "50-verify", "60-report", "70-deliver"];
|
|
25
|
+
const companion = manifest?.lifecycle.companionCommands || Object.keys(FALLBACK_DESCRIPTIONS);
|
|
26
|
+
const families = [["fast", fast], ["deep", deep], ["companion", companion]];
|
|
27
|
+
const seen = new Set();
|
|
28
|
+
const items = [];
|
|
29
|
+
for (const [family, names] of families) {
|
|
30
|
+
for (const name of names) {
|
|
31
|
+
if (seen.has(name))
|
|
32
|
+
continue;
|
|
33
|
+
seen.add(name);
|
|
34
|
+
items.push({
|
|
35
|
+
name,
|
|
36
|
+
command: `/${name}`,
|
|
37
|
+
description: await readSkillDescription(projectRoot, name) || FALLBACK_DESCRIPTIONS[name] || `Run the ${name} DevFlow command.`,
|
|
38
|
+
family
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return items;
|
|
43
|
+
}
|
|
44
|
+
async function readSkillDescription(projectRoot, name) {
|
|
45
|
+
const skillPath = path.join(projectRoot, ".agents", "skills", name, "SKILL.md");
|
|
46
|
+
try {
|
|
47
|
+
const markdown = await fs.readFile(skillPath, "utf8");
|
|
48
|
+
const raw = markdown.match(/^description:\s*["']?(.+?)["']?\s*$/m)?.[1]?.trim();
|
|
49
|
+
return raw ? raw.replace(/^\[devflow\](?:\[[A-Z]\])?\s*/i, "") : null;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (getErrorCode(error) === "ENOENT")
|
|
53
|
+
return null;
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function getErrorCode(error) {
|
|
58
|
+
return typeof error === "object" && error !== null && "code" in error && typeof error.code === "string"
|
|
59
|
+
? error.code
|
|
60
|
+
: undefined;
|
|
61
|
+
}
|
|
62
|
+
export { readCommandCatalog, readSkillDescription };
|
|
63
|
+
//# sourceMappingURL=command-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../../lib/command-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type SliceStage = "implement" | "check" | "explore" | "feature" | "status";
|
|
2
|
+
export interface SliceOptions {
|
|
3
|
+
maxTokens?: number;
|
|
4
|
+
taskIndex?: number;
|
|
5
|
+
customBranch?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ContextSliceSection {
|
|
8
|
+
name: string;
|
|
9
|
+
tokens: number;
|
|
10
|
+
content: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ContextSliceResult {
|
|
13
|
+
stage: SliceStage;
|
|
14
|
+
estimatedTokens: number;
|
|
15
|
+
rawTokens: number;
|
|
16
|
+
reductionPercentage: number;
|
|
17
|
+
content: string;
|
|
18
|
+
sections: ContextSliceSection[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Estimates token count for text using standard character/word heuristic for mixed markdown/code.
|
|
22
|
+
*/
|
|
23
|
+
export declare function estimateTokenCount(text: string): number;
|
|
24
|
+
/**
|
|
25
|
+
* Parses markdown into discrete sections by headings (## or ###) and filters by allowed patterns.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pruneMarkdownSections(markdown: string, allowedHeadingPatterns: RegExp[], maxTokens?: number): string;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a stage-aware context slice for AI agents, omitting irrelevant sections.
|
|
30
|
+
*/
|
|
31
|
+
export declare function sliceContextForStage(projectRoot: string, stage: SliceStage, options?: SliceOptions): Promise<ContextSliceResult>;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import fsSync from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { resolveActiveContextPaths } from "./branch-context.js";
|
|
5
|
+
import { readFindings } from "./findings.js";
|
|
6
|
+
import { readProjectStatus } from "./status.js";
|
|
7
|
+
/**
|
|
8
|
+
* Estimates token count for text using standard character/word heuristic for mixed markdown/code.
|
|
9
|
+
*/
|
|
10
|
+
export function estimateTokenCount(text) {
|
|
11
|
+
if (!text || text.length === 0)
|
|
12
|
+
return 0;
|
|
13
|
+
// Standard mixed heuristic: ~3.5 chars per token for markdown + code
|
|
14
|
+
return Math.ceil(text.length / 3.5);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parses markdown into discrete sections by headings (## or ###) and filters by allowed patterns.
|
|
18
|
+
*/
|
|
19
|
+
export function pruneMarkdownSections(markdown, allowedHeadingPatterns, maxTokens) {
|
|
20
|
+
const lines = markdown.split("\n");
|
|
21
|
+
const sections = [];
|
|
22
|
+
let currentHeading = "Header";
|
|
23
|
+
let currentLines = [];
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
if (/^#{1,3}\s+/.test(line)) {
|
|
26
|
+
if (currentLines.length > 0) {
|
|
27
|
+
sections.push({ heading: currentHeading, lines: currentLines });
|
|
28
|
+
}
|
|
29
|
+
currentHeading = line;
|
|
30
|
+
currentLines = [line];
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
currentLines.push(line);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (currentLines.length > 0) {
|
|
37
|
+
sections.push({ heading: currentHeading, lines: currentLines });
|
|
38
|
+
}
|
|
39
|
+
const filteredSections = sections.filter((sec) => {
|
|
40
|
+
if (sec.heading === "Header")
|
|
41
|
+
return true; // keep frontmatter/title header
|
|
42
|
+
return allowedHeadingPatterns.some((pattern) => pattern.test(sec.heading));
|
|
43
|
+
});
|
|
44
|
+
let result = filteredSections.map((s) => s.lines.join("\n")).join("\n").trim();
|
|
45
|
+
if (maxTokens && estimateTokenCount(result) > maxTokens) {
|
|
46
|
+
// Truncate safely at character limit
|
|
47
|
+
const maxChars = Math.floor(maxTokens * 3.5);
|
|
48
|
+
result = result.slice(0, maxChars) + "\n\n... [Content truncated to satisfy Token Budget]";
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Creates a stage-aware context slice for AI agents, omitting irrelevant sections.
|
|
54
|
+
*/
|
|
55
|
+
export async function sliceContextForStage(projectRoot, stage, options = {}) {
|
|
56
|
+
const contextPaths = await resolveActiveContextPaths(projectRoot, options.customBranch);
|
|
57
|
+
const sections = [];
|
|
58
|
+
let rawContentAccumulator = "";
|
|
59
|
+
// Helper to read file safely
|
|
60
|
+
async function safeRead(filePath) {
|
|
61
|
+
try {
|
|
62
|
+
if (fsSync.existsSync(filePath)) {
|
|
63
|
+
const text = await fs.readFile(filePath, "utf8");
|
|
64
|
+
rawContentAccumulator += text + "\n\n";
|
|
65
|
+
return text;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch { }
|
|
69
|
+
return "";
|
|
70
|
+
}
|
|
71
|
+
switch (stage) {
|
|
72
|
+
case "implement": {
|
|
73
|
+
// 1. Living Spec (Pruned: Scope + Checklist)
|
|
74
|
+
const specRaw = await safeRead(contextPaths.featureSpecPath);
|
|
75
|
+
if (specRaw) {
|
|
76
|
+
const prunedSpec = pruneMarkdownSections(specRaw, [
|
|
77
|
+
/1\.\s*Specification\s*&\s*Scope/i,
|
|
78
|
+
/3\.\s*Implementation\s*Checklist/i
|
|
79
|
+
]);
|
|
80
|
+
sections.push({
|
|
81
|
+
name: "Active Spec (In-Scope & Tasks)",
|
|
82
|
+
tokens: estimateTokenCount(prunedSpec),
|
|
83
|
+
content: prunedSpec
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// 2. Relevant Coding Standards
|
|
87
|
+
const standardsRaw = await safeRead(path.join(projectRoot, "devflow", "context", "coding-standards.md"));
|
|
88
|
+
if (standardsRaw) {
|
|
89
|
+
const prunedStandards = pruneMarkdownSections(standardsRaw, [
|
|
90
|
+
/Core\s*Principles/i,
|
|
91
|
+
/Engineering\s*Conventions/i,
|
|
92
|
+
/Rules/i
|
|
93
|
+
], 800);
|
|
94
|
+
sections.push({
|
|
95
|
+
name: "Core Coding Standards",
|
|
96
|
+
tokens: estimateTokenCount(prunedStandards),
|
|
97
|
+
content: prunedStandards
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// 3. Active Findings Blockers
|
|
101
|
+
const findings = await readFindings(projectRoot);
|
|
102
|
+
if (findings.blockers.length > 0 || findings.items.length > 0) {
|
|
103
|
+
const blockersText = [
|
|
104
|
+
"## Active Findings Ledger",
|
|
105
|
+
...findings.blockers.map((b) => `- ✖ [${b.severity}] ${b.status}: ${b.title} (${b.id})`),
|
|
106
|
+
...findings.items.filter((a) => !findings.blockers.includes(a)).map((a) => `- ⚠ [${a.severity}] ${a.status}: ${a.title}`)
|
|
107
|
+
].join("\n");
|
|
108
|
+
sections.push({
|
|
109
|
+
name: "Findings & Quality Constraints",
|
|
110
|
+
tokens: estimateTokenCount(blockersText),
|
|
111
|
+
content: blockersText
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case "check": {
|
|
117
|
+
// 1. Acceptance Criteria & Verification Matrix
|
|
118
|
+
const specRaw = await safeRead(contextPaths.featureSpecPath);
|
|
119
|
+
if (specRaw) {
|
|
120
|
+
const prunedSpec = pruneMarkdownSections(specRaw, [
|
|
121
|
+
/Acceptance\s*Criteria/i,
|
|
122
|
+
/Verification\s*Evidence/i,
|
|
123
|
+
/Quality\s*Gates/i
|
|
124
|
+
]);
|
|
125
|
+
sections.push({
|
|
126
|
+
name: "Acceptance Criteria & Quality Gates",
|
|
127
|
+
tokens: estimateTokenCount(prunedSpec),
|
|
128
|
+
content: prunedSpec
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// 2. Active Blockers
|
|
132
|
+
const findings = await readFindings(projectRoot);
|
|
133
|
+
if (findings.blockers.length > 0) {
|
|
134
|
+
const blockersText = [
|
|
135
|
+
"## Blockers to Verify",
|
|
136
|
+
...findings.blockers.map((b) => `- ✖ [${b.severity}] ${b.status}: ${b.title}`)
|
|
137
|
+
].join("\n");
|
|
138
|
+
sections.push({
|
|
139
|
+
name: "Blocking Quality Findings",
|
|
140
|
+
tokens: estimateTokenCount(blockersText),
|
|
141
|
+
content: blockersText
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
case "explore": {
|
|
147
|
+
// 1. Project Overview (Architecture Summary)
|
|
148
|
+
const overviewRaw = await safeRead(path.join(projectRoot, "devflow", "context", "project-overview.md"));
|
|
149
|
+
if (overviewRaw) {
|
|
150
|
+
const prunedOverview = pruneMarkdownSections(overviewRaw, [
|
|
151
|
+
/Architecture/i,
|
|
152
|
+
/Vision/i,
|
|
153
|
+
/Directives/i
|
|
154
|
+
], 600);
|
|
155
|
+
sections.push({
|
|
156
|
+
name: "Architecture & Directives",
|
|
157
|
+
tokens: estimateTokenCount(prunedOverview),
|
|
158
|
+
content: prunedOverview
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// 2. Ideas Backlog
|
|
162
|
+
const ideasRaw = await safeRead(path.join(projectRoot, "devflow", "ideas.md"));
|
|
163
|
+
if (ideasRaw) {
|
|
164
|
+
const prunedIdeas = ideasRaw.split("\n").slice(0, 50).join("\n");
|
|
165
|
+
sections.push({
|
|
166
|
+
name: "Ideas Backlog (Top)",
|
|
167
|
+
tokens: estimateTokenCount(prunedIdeas),
|
|
168
|
+
content: prunedIdeas
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case "feature": {
|
|
174
|
+
// 1. Build Plan Feature Queue
|
|
175
|
+
const buildPlanRaw = await safeRead(path.join(projectRoot, "devflow", "build-plan.md"));
|
|
176
|
+
if (buildPlanRaw) {
|
|
177
|
+
const nextFeatures = buildPlanRaw.split("\n").filter((l) => l.startsWith("- [ ]") || l.startsWith("##")).slice(0, 30).join("\n");
|
|
178
|
+
sections.push({
|
|
179
|
+
name: "Build Plan Feature Queue",
|
|
180
|
+
tokens: estimateTokenCount(nextFeatures),
|
|
181
|
+
content: nextFeatures
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// 2. Living Project Overview Constraints
|
|
185
|
+
const overviewRaw = await safeRead(path.join(projectRoot, "devflow", "context", "project-overview.md"));
|
|
186
|
+
if (overviewRaw) {
|
|
187
|
+
const prunedOverview = pruneMarkdownSections(overviewRaw, [
|
|
188
|
+
/Tech\s*Stack/i,
|
|
189
|
+
/Standards/i
|
|
190
|
+
], 500);
|
|
191
|
+
sections.push({
|
|
192
|
+
name: "Tech Stack & Standards",
|
|
193
|
+
tokens: estimateTokenCount(prunedOverview),
|
|
194
|
+
content: prunedOverview
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case "status":
|
|
200
|
+
default: {
|
|
201
|
+
const status = await readProjectStatus(projectRoot);
|
|
202
|
+
const statusText = JSON.stringify({
|
|
203
|
+
project: status.project.name,
|
|
204
|
+
currentWork: status.currentWork,
|
|
205
|
+
findings: status.findings.total,
|
|
206
|
+
blockers: status.findings.blockers.length,
|
|
207
|
+
nextAction: status.nextAction
|
|
208
|
+
}, null, 2);
|
|
209
|
+
sections.push({
|
|
210
|
+
name: "Pulse Status",
|
|
211
|
+
tokens: estimateTokenCount(statusText),
|
|
212
|
+
content: statusText
|
|
213
|
+
});
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
let finalContent = sections.map((s) => `### [Slice: ${s.name}]\n${s.content}`).join("\n\n---\n\n");
|
|
218
|
+
if (options.maxTokens && estimateTokenCount(finalContent) > options.maxTokens) {
|
|
219
|
+
const maxChars = Math.floor(options.maxTokens * 3.5);
|
|
220
|
+
finalContent = finalContent.slice(0, maxChars) + "\n\n... [Truncated by JIT Token Budget]";
|
|
221
|
+
}
|
|
222
|
+
const rawTokens = estimateTokenCount(rawContentAccumulator) || estimateTokenCount(finalContent) * 2;
|
|
223
|
+
const estimatedTokens = estimateTokenCount(finalContent);
|
|
224
|
+
const reductionPercentage = Math.max(0, Math.round(((rawTokens - estimatedTokens) / rawTokens) * 100));
|
|
225
|
+
return {
|
|
226
|
+
stage,
|
|
227
|
+
estimatedTokens,
|
|
228
|
+
rawTokens,
|
|
229
|
+
reductionPercentage,
|
|
230
|
+
content: finalContent,
|
|
231
|
+
sections
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=context-slicer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-slicer.js","sourceRoot":"","sources":["../../lib/context-slicer.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/current-work.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { resolveActiveContextPaths } from "./branch-context.js";
|
|
3
4
|
const DEVFLOW_CURRENT_FEATURE_PATH = path.join("devflow", "context", "current-feature.md");
|
|
4
5
|
const DEVFLOW_CURRENT_RUN_DIR = path.join("devflow", "context", "current-run");
|
|
5
6
|
const CURRENT_STAGE_PATH = path.join("devflow", "context", "current-stage.md");
|
|
@@ -7,24 +8,91 @@ const LEGACY_FEATURE_PATH = path.join("blueprint", "context", "current-feature.m
|
|
|
7
8
|
const RESET_MARKER = "_Nothing in progress.";
|
|
8
9
|
const CHECKBOX_PATTERN = /^\s*-\s+\[([ xX])\]\s+(.+?)\s*$/;
|
|
9
10
|
async function readCurrentWork(projectRoot) {
|
|
10
|
-
|
|
11
|
-
const
|
|
11
|
+
const contextPaths = await resolveActiveContextPaths(projectRoot);
|
|
12
|
+
const currentStageFile = contextPaths.stagePath;
|
|
13
|
+
const devflowFeatureFile = contextPaths.featureSpecPath;
|
|
14
|
+
// 1. Root Switch Authority: Check devflow/context/current-stage.md
|
|
12
15
|
try {
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const stageStats = await fs.lstat(currentStageFile).catch(() => null);
|
|
17
|
+
if (stageStats?.isFile()) {
|
|
18
|
+
const stageContent = await fs.readFile(currentStageFile, "utf8");
|
|
19
|
+
const track = extractStageField(stageContent, "Track")?.toLowerCase();
|
|
20
|
+
const activeRunningId = extractStageField(stageContent, "Active Running ID");
|
|
21
|
+
const activeDiscoveryId = extractStageField(stageContent, "Active Discovery ID");
|
|
22
|
+
const currentStage = extractStageField(stageContent, "Current Stage");
|
|
23
|
+
const isExplicitIdle = track === "idle" ||
|
|
24
|
+
(!track && activeRunningId?.toLowerCase() === "none" && currentStage?.toLowerCase().startsWith("idle"));
|
|
25
|
+
if (!isExplicitIdle) {
|
|
26
|
+
if (track === "deep" || (!track && (activeDiscoveryId || (activeRunningId && activeRunningId.toLowerCase() !== "none")))) {
|
|
27
|
+
const runSummary = await readDeepTrackWork(projectRoot, activeRunningId);
|
|
28
|
+
if (runSummary.state === "active") {
|
|
29
|
+
return runSummary;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (track === "fast" || !track) {
|
|
33
|
+
const fastSummary = await readFastTrackWork(devflowFeatureFile);
|
|
34
|
+
if (fastSummary.state === "active") {
|
|
35
|
+
if (activeRunningId && activeRunningId.toLowerCase() !== "none") {
|
|
36
|
+
fastSummary.runId = activeRunningId;
|
|
37
|
+
}
|
|
38
|
+
return fastSummary;
|
|
39
|
+
}
|
|
20
40
|
}
|
|
21
41
|
}
|
|
22
42
|
}
|
|
23
43
|
}
|
|
24
44
|
catch {
|
|
25
|
-
// Continue to
|
|
45
|
+
// Continue to fallback
|
|
46
|
+
}
|
|
47
|
+
// 2. Auto-Detect & Auto-Sync Fallback:
|
|
48
|
+
// If current-stage.md is idle or missing, check if active spec exists in current-feature.md or current-run/
|
|
49
|
+
const fastSummary = await readFastTrackWork(devflowFeatureFile);
|
|
50
|
+
if (fastSummary.state === "active") {
|
|
51
|
+
return fastSummary;
|
|
52
|
+
}
|
|
53
|
+
const deepSummary = await readDeepTrackWork(projectRoot, null);
|
|
54
|
+
if (deepSummary.state === "active") {
|
|
55
|
+
return deepSummary;
|
|
56
|
+
}
|
|
57
|
+
// 3. Fallback to legacy blueprint/context/current-feature.md
|
|
58
|
+
const legacyPath = path.join(projectRoot, LEGACY_FEATURE_PATH);
|
|
59
|
+
try {
|
|
60
|
+
const stats = await fs.lstat(legacyPath).catch(() => null);
|
|
61
|
+
if (stats?.isFile()) {
|
|
62
|
+
const content = await fs.readFile(legacyPath, "utf8");
|
|
63
|
+
return parseCurrentWork(content);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Return idle
|
|
68
|
+
}
|
|
69
|
+
return idleSummary();
|
|
70
|
+
}
|
|
71
|
+
function extractStageField(markdown, label) {
|
|
72
|
+
const escaped = label.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
73
|
+
const match = markdown.match(new RegExp(`^-\\s+(?:\\*\\*)?${escaped}(?:\\*\\*)?:\\s*\\x60?([^\\r\\n\\x60]+)`, "im"));
|
|
74
|
+
const value = match?.[1]?.trim() || "";
|
|
75
|
+
return value === "" || value.toLowerCase() === "none" || value.toLowerCase() === "idle"
|
|
76
|
+
? null
|
|
77
|
+
: value;
|
|
78
|
+
}
|
|
79
|
+
async function readFastTrackWork(featurePath) {
|
|
80
|
+
try {
|
|
81
|
+
const stats = await fs.lstat(featurePath).catch(() => null);
|
|
82
|
+
if (stats?.isFile()) {
|
|
83
|
+
const content = await fs.readFile(featurePath, "utf8");
|
|
84
|
+
if (content.trim() !== "" && !content.includes(RESET_MARKER)) {
|
|
85
|
+
return parseCurrentWork(content);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Return idle
|
|
26
91
|
}
|
|
27
|
-
|
|
92
|
+
return idleSummary();
|
|
93
|
+
}
|
|
94
|
+
async function readDeepTrackWork(projectRoot, activeRunningId) {
|
|
95
|
+
// Check devflow/context/current-run/
|
|
28
96
|
const currentRunDir = path.join(projectRoot, DEVFLOW_CURRENT_RUN_DIR);
|
|
29
97
|
try {
|
|
30
98
|
const runStats = await fs.lstat(currentRunDir).catch(() => null);
|
|
@@ -41,36 +109,26 @@ async function readCurrentWork(projectRoot) {
|
|
|
41
109
|
const specContent = await fs.readFile(specFile, "utf8");
|
|
42
110
|
const parsed = parseCurrentWork(specContent);
|
|
43
111
|
if (parsed.state === "active") {
|
|
112
|
+
if (activeRunningId)
|
|
113
|
+
parsed.runId = activeRunningId;
|
|
114
|
+
parsed.type = "stage";
|
|
44
115
|
return parsed;
|
|
45
116
|
}
|
|
46
117
|
}
|
|
47
118
|
const checkStats = await fs.lstat(checklistPath).catch(() => null);
|
|
48
119
|
if (checkStats?.isFile()) {
|
|
49
120
|
const checklistContent = await fs.readFile(checklistPath, "utf8");
|
|
50
|
-
return parseChecklistWork(checklistContent, "current-run");
|
|
121
|
+
return parseChecklistWork(checklistContent, activeRunningId || "current-run");
|
|
51
122
|
}
|
|
52
123
|
}
|
|
53
124
|
}
|
|
54
125
|
catch {
|
|
55
126
|
// Continue
|
|
56
127
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (stageStats?.isFile()) {
|
|
62
|
-
const stageContent = await fs.readFile(currentStageFile, "utf8");
|
|
63
|
-
const activeRunningIdMatch = stageContent.match(/-\s+\*\*Active Running ID\*\*:\s*`?([A-Za-z0-9-_]+|None)`?/i);
|
|
64
|
-
const activeRunningId = activeRunningIdMatch ? activeRunningIdMatch[1].trim() : null;
|
|
65
|
-
const stageMatch = stageContent.match(/-\s+\*\*Current Stage\*\*:\s*([^\r\n]+)/i);
|
|
66
|
-
const stageName = stageMatch ? stageMatch[1].trim() : "";
|
|
67
|
-
if (!activeRunningId ||
|
|
68
|
-
activeRunningId.toLowerCase() === "none" ||
|
|
69
|
-
stageName.toLowerCase().startsWith("idle")) {
|
|
70
|
-
return idleSummary();
|
|
71
|
-
}
|
|
72
|
-
// Check legacy active run directory under devflow/runs/
|
|
73
|
-
const activeRunDir = path.join(projectRoot, "devflow", "runs", activeRunningId);
|
|
128
|
+
// Check legacy active run directory under devflow/runs/
|
|
129
|
+
if (activeRunningId && activeRunningId.toLowerCase() !== "none") {
|
|
130
|
+
const activeRunDir = path.join(projectRoot, "devflow", "runs", activeRunningId);
|
|
131
|
+
try {
|
|
74
132
|
const featurePath = path.join(activeRunDir, "current-feature.md");
|
|
75
133
|
const legacySpecPath = path.join(activeRunDir, "spec.md");
|
|
76
134
|
const stage20Path = path.join(activeRunDir, "20-spec.md");
|
|
@@ -78,12 +136,14 @@ async function readCurrentWork(projectRoot) {
|
|
|
78
136
|
? featurePath
|
|
79
137
|
: (await fs.lstat(stage20Path).catch(() => null))?.isFile()
|
|
80
138
|
? stage20Path
|
|
81
|
-
: legacySpecPath
|
|
82
|
-
|
|
83
|
-
|
|
139
|
+
: (await fs.lstat(legacySpecPath).catch(() => null))?.isFile()
|
|
140
|
+
? legacySpecPath
|
|
141
|
+
: null;
|
|
142
|
+
if (specPath) {
|
|
84
143
|
const specContent = await fs.readFile(specPath, "utf8");
|
|
85
144
|
const parsed = parseCurrentWork(specContent);
|
|
86
145
|
parsed.runId = activeRunningId;
|
|
146
|
+
parsed.type = "stage";
|
|
87
147
|
return parsed;
|
|
88
148
|
}
|
|
89
149
|
const checklistPath = path.join(activeRunDir, "checklists", "implementation-checklist.md");
|
|
@@ -92,24 +152,11 @@ async function readCurrentWork(projectRoot) {
|
|
|
92
152
|
const checklistContent = await fs.readFile(checklistPath, "utf8");
|
|
93
153
|
return parseChecklistWork(checklistContent, activeRunningId);
|
|
94
154
|
}
|
|
95
|
-
return idleSummary();
|
|
96
155
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
// Fall back to legacy
|
|
100
|
-
}
|
|
101
|
-
// 4. Fallback to legacy blueprint/context/current-feature.md
|
|
102
|
-
const legacyPath = path.join(projectRoot, LEGACY_FEATURE_PATH);
|
|
103
|
-
try {
|
|
104
|
-
const stats = await fs.lstat(legacyPath);
|
|
105
|
-
if (stats.isFile()) {
|
|
106
|
-
const content = await fs.readFile(legacyPath, "utf8");
|
|
107
|
-
return parseCurrentWork(content);
|
|
156
|
+
catch {
|
|
157
|
+
// Continue
|
|
108
158
|
}
|
|
109
159
|
}
|
|
110
|
-
catch {
|
|
111
|
-
// Return idle
|
|
112
|
-
}
|
|
113
160
|
return idleSummary();
|
|
114
161
|
}
|
|
115
162
|
function parseCurrentWork(markdown) {
|
|
@@ -119,11 +166,12 @@ function parseCurrentWork(markdown) {
|
|
|
119
166
|
message: "Current work file is empty."
|
|
120
167
|
});
|
|
121
168
|
}
|
|
122
|
-
if (markdown.includes(RESET_MARKER)
|
|
169
|
+
if (markdown.includes(RESET_MARKER) ||
|
|
170
|
+
/Nothing in progress|None in progress/i.test(markdown)) {
|
|
123
171
|
return idleSummary();
|
|
124
172
|
}
|
|
125
173
|
const heading = markdown.match(/^#\s+(.+)$/m)?.[1]?.trim() || null;
|
|
126
|
-
const headingIdentity = heading?.match(/^(Feature|Fix|Rollback|Stage|Spec):\s*(.+)$/i);
|
|
174
|
+
const headingIdentity = heading?.match(/^(?:(?:\d{2}|[0-9]+)\s+)?(Feature|Fix|Rollback|Stage|Spec):\s*(.+)$/i);
|
|
127
175
|
const explicitType = markdown.match(/^\*\*Type:\*\*\s*(Feature|Fix|Rollback|Stage|Spec)\s*$/im)?.[1];
|
|
128
176
|
const typeLabel = explicitType || headingIdentity?.[1] || null;
|
|
129
177
|
const type = normalizeWorkType(typeLabel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-work.js","sourceRoot":"","sources":["../../lib/current-work.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"current-work.js","sourceRoot":"","sources":["../../lib/current-work.ts"],"names":[],"mappings":"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"}
|