@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.
Files changed (147) hide show
  1. package/README.md +30 -8
  2. package/dist/bin/create-nexus-devflow.d.ts +22 -1
  3. package/dist/bin/create-nexus-devflow.js +658 -11
  4. package/dist/bin/create-nexus-devflow.js.map +1 -1
  5. package/dist/lib/branch-context.d.ts +39 -0
  6. package/dist/lib/branch-context.js +196 -0
  7. package/dist/lib/branch-context.js.map +1 -0
  8. package/dist/lib/code-graph.d.ts +30 -0
  9. package/dist/lib/code-graph.js +209 -0
  10. package/dist/lib/code-graph.js.map +1 -0
  11. package/dist/lib/command-catalog.d.ts +11 -0
  12. package/dist/lib/command-catalog.js +63 -0
  13. package/dist/lib/command-catalog.js.map +1 -0
  14. package/dist/lib/context-slicer.d.ts +31 -0
  15. package/dist/lib/context-slicer.js +234 -0
  16. package/dist/lib/context-slicer.js.map +1 -0
  17. package/dist/lib/current-work.js +97 -49
  18. package/dist/lib/current-work.js.map +1 -1
  19. package/dist/lib/dashboard-page.d.ts +2 -0
  20. package/dist/lib/dashboard-page.js +285 -0
  21. package/dist/lib/dashboard-page.js.map +1 -0
  22. package/dist/lib/dashboard-snapshot.d.ts +62 -0
  23. package/dist/lib/dashboard-snapshot.js +114 -0
  24. package/dist/lib/dashboard-snapshot.js.map +1 -0
  25. package/dist/lib/dashboard.d.ts +2 -0
  26. package/dist/lib/dashboard.js +398 -8
  27. package/dist/lib/dashboard.js.map +1 -1
  28. package/dist/lib/discoveries.d.ts +19 -0
  29. package/dist/lib/discoveries.js +81 -0
  30. package/dist/lib/discoveries.js.map +1 -0
  31. package/dist/lib/doctor.d.ts +26 -0
  32. package/dist/lib/doctor.js +474 -0
  33. package/dist/lib/doctor.js.map +1 -0
  34. package/dist/lib/drift-reconciler.d.ts +38 -0
  35. package/dist/lib/drift-reconciler.js +155 -0
  36. package/dist/lib/drift-reconciler.js.map +1 -0
  37. package/dist/lib/findings.d.ts +26 -2
  38. package/dist/lib/findings.js +165 -1
  39. package/dist/lib/findings.js.map +1 -1
  40. package/dist/lib/gatekeeper.d.ts +20 -0
  41. package/dist/lib/gatekeeper.js +106 -0
  42. package/dist/lib/gatekeeper.js.map +1 -0
  43. package/dist/lib/git-hooks.d.ts +16 -0
  44. package/dist/lib/git-hooks.js +103 -0
  45. package/dist/lib/git-hooks.js.map +1 -0
  46. package/dist/lib/history.d.ts +6 -1
  47. package/dist/lib/history.js +98 -11
  48. package/dist/lib/history.js.map +1 -1
  49. package/dist/lib/ide-extension.d.ts +38 -0
  50. package/dist/lib/ide-extension.js +61 -0
  51. package/dist/lib/ide-extension.js.map +1 -0
  52. package/dist/lib/ideas.d.ts +26 -0
  53. package/dist/lib/ideas.js +179 -0
  54. package/dist/lib/ideas.js.map +1 -0
  55. package/dist/lib/mcp.d.ts +36 -0
  56. package/dist/lib/mcp.js +653 -0
  57. package/dist/lib/mcp.js.map +1 -0
  58. package/dist/lib/status.d.ts +3 -1
  59. package/dist/lib/status.js +60 -6
  60. package/dist/lib/status.js.map +1 -1
  61. package/dist/lib/swarm-orchestrator.d.ts +31 -0
  62. package/dist/lib/swarm-orchestrator.js +134 -0
  63. package/dist/lib/swarm-orchestrator.js.map +1 -0
  64. package/dist/lib/update.js +2 -2
  65. package/dist/lib/update.js.map +1 -1
  66. package/dist/lib/version-check.d.ts +22 -0
  67. package/dist/lib/version-check.js +59 -0
  68. package/dist/lib/version-check.js.map +1 -0
  69. package/dist/lib/webview-studio.d.ts +8 -0
  70. package/dist/lib/webview-studio.js +463 -0
  71. package/dist/lib/webview-studio.js.map +1 -0
  72. package/dist/lib/workflow-state.d.ts +23 -0
  73. package/dist/lib/workflow-state.js +128 -0
  74. package/dist/lib/workflow-state.js.map +1 -0
  75. package/dist/scripts/prepare-template.js +3 -3
  76. package/package.json +1 -1
  77. package/template/{.claude/skills/00-discover → .agents/skills/00-explore}/SKILL.md +10 -10
  78. package/template/.agents/skills/10-define/SKILL.md +4 -4
  79. package/template/.agents/skills/20-spec/SKILL.md +2 -3
  80. package/template/.agents/skills/30-plan/SKILL.md +2 -3
  81. package/template/.agents/skills/40-execute/SKILL.md +2 -2
  82. package/template/.agents/skills/50-verify/SKILL.md +2 -2
  83. package/template/.agents/skills/60-report/SKILL.md +3 -3
  84. package/template/{.claude/skills/70-release → .agents/skills/70-deliver}/SKILL.md +7 -13
  85. package/template/.agents/skills/adopt/SKILL.md +136 -73
  86. package/template/.agents/skills/audit/SKILL.md +275 -0
  87. package/template/.agents/skills/autopilot/SKILL.md +228 -147
  88. package/template/.agents/skills/brainstorm/SKILL.md +3 -3
  89. package/template/.agents/skills/brief/SKILL.md +74 -51
  90. package/template/.agents/skills/check/SKILL.md +96 -76
  91. package/template/.agents/skills/ci/SKILL.md +140 -61
  92. package/template/.agents/skills/complete/SKILL.md +156 -101
  93. package/template/.agents/skills/convert-any-to-md/SKILL.md +2 -2
  94. package/template/.agents/skills/debug/SKILL.md +124 -49
  95. package/template/.agents/skills/devflow/SKILL.md +16 -10
  96. package/template/.agents/skills/discovery/SKILL.md +166 -0
  97. package/template/.agents/skills/doctor/SKILL.md +188 -72
  98. package/template/.agents/skills/feature/SKILL.md +195 -102
  99. package/template/.agents/skills/fix/SKILL.md +41 -90
  100. package/template/.agents/skills/idea/SKILL.md +3 -3
  101. package/template/.agents/skills/implement/SKILL.md +189 -46
  102. package/template/.agents/skills/onboard/SKILL.md +215 -85
  103. package/template/.agents/skills/overview/SKILL.md +51 -85
  104. package/template/.agents/skills/prototype/SKILL.md +82 -27
  105. package/template/.agents/skills/release/SKILL.md +160 -0
  106. package/template/.agents/skills/report-html/SKILL.md +2 -2
  107. package/template/.agents/skills/rollback/SKILL.md +123 -77
  108. package/template/.agents/skills/status/SKILL.md +109 -0
  109. package/template/.agents/skills/test/SKILL.md +2 -2
  110. package/template/.agents/skills/tests/SKILL.md +126 -0
  111. package/template/.agents/skills/try/SKILL.md +77 -65
  112. package/template/{.agents/skills/00-discover → .claude/skills/00-explore}/SKILL.md +9 -9
  113. package/template/.claude/skills/10-define/SKILL.md +2 -2
  114. package/template/.claude/skills/20-spec/SKILL.md +1 -1
  115. package/template/.claude/skills/30-plan/SKILL.md +1 -1
  116. package/template/.claude/skills/60-report/SKILL.md +1 -1
  117. package/template/{.agents/skills/70-release → .claude/skills/70-deliver}/SKILL.md +6 -12
  118. package/template/.claude/skills/adopt/SKILL.md +2 -2
  119. package/template/.claude/skills/audit/SKILL.md +141 -0
  120. package/template/.claude/skills/autopilot/SKILL.md +74 -52
  121. package/template/.claude/skills/brief/SKILL.md +67 -45
  122. package/template/.claude/skills/ci/SKILL.md +1 -1
  123. package/template/.claude/skills/complete/SKILL.md +1 -1
  124. package/template/.claude/skills/debug/SKILL.md +1 -1
  125. package/template/.claude/skills/devflow/SKILL.md +7 -7
  126. package/template/.claude/skills/discovery/SKILL.md +145 -0
  127. package/template/.claude/skills/doctor/SKILL.md +1 -1
  128. package/template/.claude/skills/feature/SKILL.md +67 -18
  129. package/template/.claude/skills/fix/SKILL.md +1 -1
  130. package/template/.claude/skills/idea/SKILL.md +2 -2
  131. package/template/.claude/skills/onboard/SKILL.md +3 -3
  132. package/template/.claude/skills/overview/SKILL.md +39 -88
  133. package/template/.claude/skills/prototype/SKILL.md +1 -1
  134. package/template/.claude/skills/release/SKILL.md +171 -0
  135. package/template/.claude/skills/rollback/SKILL.md +2 -2
  136. package/template/AGENTS.md +5 -5
  137. package/template/devflow/build-plan.md +62 -0
  138. package/template/devflow/context/ai-interaction.md +4 -4
  139. package/template/devflow/context/coding-standards.md +3 -3
  140. package/template/devflow/context/current-stage.md +1 -1
  141. package/template/devflow/context/findings.md +1 -1
  142. package/template/devflow/history/HISTORY.md +2 -2
  143. package/template/devflow/project-plan.md +79 -0
  144. package/template/devflow/reference/mockup.html +476 -0
  145. package/template/devflow/reference/project-overview-template.md +39 -0
  146. package/template/devflow/reference/running-id-contract.md +24 -2
  147. 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":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAW3C,MAAM,qBAAqB,GAA2B;IACpD,OAAO,EAAE,yEAAyE;IAClF,MAAM,EAAE,gFAAgF;IACxF,QAAQ,EAAE,wEAAwE;IAClF,IAAI,EAAE,8DAA8D;IACpE,KAAK,EAAE,uEAAuE;IAC9E,KAAK,EAAE,4EAA4E;IACnF,OAAO,EAAE,sEAAsE;IAC/E,KAAK,EAAE,4DAA4D;IACnE,GAAG,EAAE,6DAA6D;IAClE,QAAQ,EAAE,oEAAoE;IAC9E,EAAE,EAAE,2CAA2C;IAC/C,IAAI,EAAE,2DAA2D;IACjE,SAAS,EAAE,uDAAuD;IAClE,SAAS,EAAE,iEAAiE;IAC5E,aAAa,EAAE,2DAA2D;CAC3E,CAAC;AAEF,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,QAAQ,EAAE,SAAS,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,QAAQ,EAAE,SAAS,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3J,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9F,MAAM,QAAQ,GAAqC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9G,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,OAAO,EAAE,IAAI,IAAI,EAAE;gBACnB,WAAW,EAAE,MAAM,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,WAAW,IAAI,mBAAmB;gBAC/H,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAY;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAChF,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QACrG,CAAC,CAAC,KAAK,CAAC,IAAI;QACZ,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -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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"}
@@ -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
- // 1. Primary: Check devflow/context/current-feature.md
11
- const devflowFeatureFile = path.join(projectRoot, DEVFLOW_CURRENT_FEATURE_PATH);
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 featStats = await fs.lstat(devflowFeatureFile).catch(() => null);
14
- if (featStats?.isFile()) {
15
- const featContent = await fs.readFile(devflowFeatureFile, "utf8");
16
- if (featContent.trim() !== "" && !featContent.includes(RESET_MARKER)) {
17
- const parsed = parseCurrentWork(featContent);
18
- if (parsed.state === "active") {
19
- return parsed;
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 next checks
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
- // 2. Check devflow/context/current-run/ (Deep-Track active run)
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
- // 3. Check devflow/context/current-stage.md
58
- const currentStageFile = path.join(projectRoot, CURRENT_STAGE_PATH);
59
- try {
60
- const stageStats = await fs.lstat(currentStageFile).catch(() => null);
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
- const specStats = await fs.lstat(specPath).catch(() => null);
83
- if (specStats?.isFile()) {
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
- catch {
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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"}