@mobiman/vector 1.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 (225) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +117 -0
  3. package/agents/vector-codebase-mapper.md +770 -0
  4. package/agents/vector-debugger.md +1338 -0
  5. package/agents/vector-executor.md +487 -0
  6. package/agents/vector-integration-checker.md +443 -0
  7. package/agents/vector-nyquist-auditor.md +176 -0
  8. package/agents/vector-phase-researcher.md +553 -0
  9. package/agents/vector-plan-checker.md +706 -0
  10. package/agents/vector-planner.md +1307 -0
  11. package/agents/vector-project-researcher.md +629 -0
  12. package/agents/vector-research-synthesizer.md +247 -0
  13. package/agents/vector-roadmapper.md +650 -0
  14. package/agents/vector-ui-auditor.md +439 -0
  15. package/agents/vector-ui-checker.md +300 -0
  16. package/agents/vector-ui-researcher.md +353 -0
  17. package/agents/vector-verifier.md +579 -0
  18. package/bin/install.cjs +2907 -0
  19. package/bin/install.cjs.map +1 -0
  20. package/bin/install.cts +3103 -0
  21. package/bin/install.d.cts +3 -0
  22. package/bin/install.d.cts.map +1 -0
  23. package/commands/vector/add-phase.md +43 -0
  24. package/commands/vector/add-tests.md +41 -0
  25. package/commands/vector/add-todo.md +47 -0
  26. package/commands/vector/audit-milestone.md +36 -0
  27. package/commands/vector/autonomous.md +41 -0
  28. package/commands/vector/check-todos.md +45 -0
  29. package/commands/vector/cleanup.md +18 -0
  30. package/commands/vector/complete-milestone.md +136 -0
  31. package/commands/vector/debug.md +168 -0
  32. package/commands/vector/discuss-phase.md +90 -0
  33. package/commands/vector/do.md +30 -0
  34. package/commands/vector/execute-phase.md +41 -0
  35. package/commands/vector/health.md +22 -0
  36. package/commands/vector/help.md +22 -0
  37. package/commands/vector/insert-phase.md +32 -0
  38. package/commands/vector/join-discord.md +18 -0
  39. package/commands/vector/list-phase-assumptions.md +46 -0
  40. package/commands/vector/map-codebase.md +71 -0
  41. package/commands/vector/new-milestone.md +44 -0
  42. package/commands/vector/new-project.md +42 -0
  43. package/commands/vector/pause-work.md +38 -0
  44. package/commands/vector/plan-milestone-gaps.md +34 -0
  45. package/commands/vector/plan-phase.md +45 -0
  46. package/commands/vector/progress.md +24 -0
  47. package/commands/vector/quick.md +47 -0
  48. package/commands/vector/reapply-patches.md +123 -0
  49. package/commands/vector/remove-phase.md +31 -0
  50. package/commands/vector/research-phase.md +190 -0
  51. package/commands/vector/resume-work.md +40 -0
  52. package/commands/vector/set-profile.md +12 -0
  53. package/commands/vector/settings.md +36 -0
  54. package/commands/vector/stats.md +18 -0
  55. package/commands/vector/ui-phase.md +34 -0
  56. package/commands/vector/ui-review.md +32 -0
  57. package/commands/vector/update.md +37 -0
  58. package/commands/vector/validate-phase.md +35 -0
  59. package/commands/vector/verify-work.md +38 -0
  60. package/core/bin/lib/commands.cjs +641 -0
  61. package/core/bin/lib/commands.cjs.map +1 -0
  62. package/core/bin/lib/commands.cts +712 -0
  63. package/core/bin/lib/commands.d.cts +23 -0
  64. package/core/bin/lib/commands.d.cts.map +1 -0
  65. package/core/bin/lib/config.cjs +281 -0
  66. package/core/bin/lib/config.cjs.map +1 -0
  67. package/core/bin/lib/config.cts +301 -0
  68. package/core/bin/lib/config.d.cts +50 -0
  69. package/core/bin/lib/config.d.cts.map +1 -0
  70. package/core/bin/lib/core.cjs +483 -0
  71. package/core/bin/lib/core.cjs.map +1 -0
  72. package/core/bin/lib/core.cts +544 -0
  73. package/core/bin/lib/core.d.cts +96 -0
  74. package/core/bin/lib/core.d.cts.map +1 -0
  75. package/core/bin/lib/frontmatter.cjs +341 -0
  76. package/core/bin/lib/frontmatter.cjs.map +1 -0
  77. package/core/bin/lib/frontmatter.cts +295 -0
  78. package/core/bin/lib/frontmatter.d.cts +18 -0
  79. package/core/bin/lib/frontmatter.d.cts.map +1 -0
  80. package/core/bin/lib/init.cjs +674 -0
  81. package/core/bin/lib/init.cjs.map +1 -0
  82. package/core/bin/lib/init.cts +775 -0
  83. package/core/bin/lib/init.d.cts +16 -0
  84. package/core/bin/lib/init.d.cts.map +1 -0
  85. package/core/bin/lib/milestone.cjs +210 -0
  86. package/core/bin/lib/milestone.cjs.map +1 -0
  87. package/core/bin/lib/milestone.cts +241 -0
  88. package/core/bin/lib/milestone.d.cts +11 -0
  89. package/core/bin/lib/milestone.d.cts.map +1 -0
  90. package/core/bin/lib/model-profiles.cjs +62 -0
  91. package/core/bin/lib/model-profiles.cjs.map +1 -0
  92. package/core/bin/lib/model-profiles.cts +66 -0
  93. package/core/bin/lib/model-profiles.d.cts +33 -0
  94. package/core/bin/lib/model-profiles.d.cts.map +1 -0
  95. package/core/bin/lib/phase.cjs +713 -0
  96. package/core/bin/lib/phase.cjs.map +1 -0
  97. package/core/bin/lib/phase.cts +914 -0
  98. package/core/bin/lib/phase.d.cts +21 -0
  99. package/core/bin/lib/phase.d.cts.map +1 -0
  100. package/core/bin/lib/roadmap.cjs +246 -0
  101. package/core/bin/lib/roadmap.cjs.map +1 -0
  102. package/core/bin/lib/roadmap.cts +311 -0
  103. package/core/bin/lib/roadmap.d.cts +7 -0
  104. package/core/bin/lib/roadmap.d.cts.map +1 -0
  105. package/core/bin/lib/state.cjs +709 -0
  106. package/core/bin/lib/state.cjs.map +1 -0
  107. package/core/bin/lib/state.cts +718 -0
  108. package/core/bin/lib/state.d.cts +47 -0
  109. package/core/bin/lib/state.d.cts.map +1 -0
  110. package/core/bin/lib/template.cjs +220 -0
  111. package/core/bin/lib/template.cjs.map +1 -0
  112. package/core/bin/lib/template.cts +229 -0
  113. package/core/bin/lib/template.d.cts +15 -0
  114. package/core/bin/lib/template.d.cts.map +1 -0
  115. package/core/bin/lib/verify.cjs +824 -0
  116. package/core/bin/lib/verify.cjs.map +1 -0
  117. package/core/bin/lib/verify.cts +829 -0
  118. package/core/bin/lib/verify.d.cts +17 -0
  119. package/core/bin/lib/verify.d.cts.map +1 -0
  120. package/core/bin/vector-tools.cjs +641 -0
  121. package/core/bin/vector-tools.cjs.map +1 -0
  122. package/core/bin/vector-tools.cts +603 -0
  123. package/core/bin/vector-tools.d.cts +128 -0
  124. package/core/bin/vector-tools.d.cts.map +1 -0
  125. package/core/references/checkpoints.md +776 -0
  126. package/core/references/continuation-format.md +249 -0
  127. package/core/references/decimal-phase-calculation.md +65 -0
  128. package/core/references/git-integration.md +248 -0
  129. package/core/references/git-planning-commit.md +38 -0
  130. package/core/references/model-profile-resolution.md +36 -0
  131. package/core/references/model-profiles.md +101 -0
  132. package/core/references/phase-argument-parsing.md +61 -0
  133. package/core/references/planning-config.md +200 -0
  134. package/core/references/questioning.md +162 -0
  135. package/core/references/tdd.md +263 -0
  136. package/core/references/ui-brand.md +160 -0
  137. package/core/references/verification-patterns.md +612 -0
  138. package/core/templates/DEBUG.md +164 -0
  139. package/core/templates/UAT.md +247 -0
  140. package/core/templates/UI-SPEC.md +100 -0
  141. package/core/templates/VALIDATION.md +76 -0
  142. package/core/templates/codebase/architecture.md +255 -0
  143. package/core/templates/codebase/concerns.md +310 -0
  144. package/core/templates/codebase/conventions.md +307 -0
  145. package/core/templates/codebase/integrations.md +280 -0
  146. package/core/templates/codebase/stack.md +186 -0
  147. package/core/templates/codebase/structure.md +285 -0
  148. package/core/templates/codebase/testing.md +480 -0
  149. package/core/templates/config.json +37 -0
  150. package/core/templates/context.md +352 -0
  151. package/core/templates/continue-here.md +78 -0
  152. package/core/templates/copilot-instructions.md +7 -0
  153. package/core/templates/debug-subagent-prompt.md +91 -0
  154. package/core/templates/discovery.md +146 -0
  155. package/core/templates/milestone-archive.md +123 -0
  156. package/core/templates/milestone.md +115 -0
  157. package/core/templates/phase-prompt.md +610 -0
  158. package/core/templates/planner-subagent-prompt.md +117 -0
  159. package/core/templates/project.md +184 -0
  160. package/core/templates/requirements.md +231 -0
  161. package/core/templates/research-project/ARCHITECTURE.md +204 -0
  162. package/core/templates/research-project/FEATURES.md +147 -0
  163. package/core/templates/research-project/PITFALLS.md +200 -0
  164. package/core/templates/research-project/STACK.md +120 -0
  165. package/core/templates/research-project/SUMMARY.md +170 -0
  166. package/core/templates/research.md +552 -0
  167. package/core/templates/retrospective.md +54 -0
  168. package/core/templates/roadmap.md +202 -0
  169. package/core/templates/state.md +176 -0
  170. package/core/templates/summary-complex.md +59 -0
  171. package/core/templates/summary-minimal.md +41 -0
  172. package/core/templates/summary-standard.md +48 -0
  173. package/core/templates/summary.md +248 -0
  174. package/core/templates/user-setup.md +311 -0
  175. package/core/templates/verification-report.md +322 -0
  176. package/core/workflows/add-phase.md +112 -0
  177. package/core/workflows/add-tests.md +351 -0
  178. package/core/workflows/add-todo.md +158 -0
  179. package/core/workflows/audit-milestone.md +332 -0
  180. package/core/workflows/autonomous.md +743 -0
  181. package/core/workflows/check-todos.md +177 -0
  182. package/core/workflows/cleanup.md +152 -0
  183. package/core/workflows/complete-milestone.md +766 -0
  184. package/core/workflows/diagnose-issues.md +219 -0
  185. package/core/workflows/discovery-phase.md +289 -0
  186. package/core/workflows/discuss-phase.md +762 -0
  187. package/core/workflows/do.md +104 -0
  188. package/core/workflows/execute-phase.md +468 -0
  189. package/core/workflows/execute-plan.md +483 -0
  190. package/core/workflows/health.md +159 -0
  191. package/core/workflows/help.md +513 -0
  192. package/core/workflows/insert-phase.md +130 -0
  193. package/core/workflows/list-phase-assumptions.md +178 -0
  194. package/core/workflows/map-codebase.md +316 -0
  195. package/core/workflows/new-milestone.md +386 -0
  196. package/core/workflows/new-project.md +1113 -0
  197. package/core/workflows/node-repair.md +92 -0
  198. package/core/workflows/pause-work.md +122 -0
  199. package/core/workflows/plan-milestone-gaps.md +274 -0
  200. package/core/workflows/plan-phase.md +666 -0
  201. package/core/workflows/progress.md +382 -0
  202. package/core/workflows/quick.md +717 -0
  203. package/core/workflows/remove-phase.md +155 -0
  204. package/core/workflows/research-phase.md +74 -0
  205. package/core/workflows/resume-project.md +307 -0
  206. package/core/workflows/settings.md +243 -0
  207. package/core/workflows/stats.md +60 -0
  208. package/core/workflows/transition.md +544 -0
  209. package/core/workflows/ui-phase.md +290 -0
  210. package/core/workflows/ui-review.md +157 -0
  211. package/core/workflows/update.md +320 -0
  212. package/core/workflows/validate-phase.md +167 -0
  213. package/core/workflows/verify-phase.md +243 -0
  214. package/core/workflows/verify-work.md +584 -0
  215. package/package.json +55 -0
  216. package/scripts/build-hooks.cjs +38 -0
  217. package/scripts/build-hooks.cjs.map +1 -0
  218. package/scripts/build-hooks.cts +41 -0
  219. package/scripts/build-hooks.d.cts +6 -0
  220. package/scripts/build-hooks.d.cts.map +1 -0
  221. package/scripts/run-tests.cjs +28 -0
  222. package/scripts/run-tests.cjs.map +1 -0
  223. package/scripts/run-tests.cts +28 -0
  224. package/scripts/run-tests.d.cts +3 -0
  225. package/scripts/run-tests.d.cts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.cts","sourceRoot":"","sources":["config.cts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAwElG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAOtE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAiC5J;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAmBpH;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAkCzF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA+BrG"}
@@ -0,0 +1,483 @@
1
+ "use strict";
2
+ /**
3
+ * Core — Shared utilities, constants, and internal helpers
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.toPosixPath = toPosixPath;
10
+ exports.output = output;
11
+ exports.error = error;
12
+ exports.safeReadFile = safeReadFile;
13
+ exports.loadConfig = loadConfig;
14
+ exports.isGitIgnored = isGitIgnored;
15
+ exports.execGit = execGit;
16
+ exports.escapeRegex = escapeRegex;
17
+ exports.normalizePhaseName = normalizePhaseName;
18
+ exports.comparePhaseNum = comparePhaseNum;
19
+ exports.searchPhaseInDir = searchPhaseInDir;
20
+ exports.findPhaseInternal = findPhaseInternal;
21
+ exports.getArchivedPhaseDirs = getArchivedPhaseDirs;
22
+ exports.stripShippedMilestones = stripShippedMilestones;
23
+ exports.replaceInCurrentMilestone = replaceInCurrentMilestone;
24
+ exports.getRoadmapPhaseInternal = getRoadmapPhaseInternal;
25
+ exports.resolveModelInternal = resolveModelInternal;
26
+ exports.pathExistsInternal = pathExistsInternal;
27
+ exports.generateSlugInternal = generateSlugInternal;
28
+ exports.getMilestoneInfo = getMilestoneInfo;
29
+ exports.getMilestonePhaseFilter = getMilestonePhaseFilter;
30
+ const fs_1 = __importDefault(require("fs"));
31
+ const path_1 = __importDefault(require("path"));
32
+ const os_1 = __importDefault(require("os"));
33
+ const child_process_1 = require("child_process");
34
+ const model_profiles_cjs_1 = require("./model-profiles.cjs");
35
+ // ─── Path helpers ────────────────────────────────────────────────────────────
36
+ /** Normalize a relative path to always use forward slashes (cross-platform). */
37
+ function toPosixPath(p) {
38
+ return p.split(path_1.default.sep).join('/');
39
+ }
40
+ // ─── Output helpers ───────────────────────────────────────────────────────────
41
+ function output(result, raw, rawValue) {
42
+ if (raw && rawValue !== undefined) {
43
+ process.stdout.write(String(rawValue));
44
+ }
45
+ else {
46
+ const json = JSON.stringify(result, null, 2);
47
+ // Large payloads exceed Claude Code's Bash tool buffer (~50KB).
48
+ // Write to tmpfile and output the path prefixed with @file: so callers can detect it.
49
+ if (json.length > 50000) {
50
+ const tmpPath = path_1.default.join(os_1.default.tmpdir(), `vector-${Date.now()}.json`);
51
+ fs_1.default.writeFileSync(tmpPath, json, 'utf-8');
52
+ process.stdout.write('@file:' + tmpPath);
53
+ }
54
+ else {
55
+ process.stdout.write(json);
56
+ }
57
+ }
58
+ process.exit(0);
59
+ }
60
+ function error(message) {
61
+ process.stderr.write('Error: ' + message + '\n');
62
+ process.exit(1);
63
+ }
64
+ // ─── File & Config utilities ──────────────────────────────────────────────────
65
+ function safeReadFile(filePath) {
66
+ try {
67
+ return fs_1.default.readFileSync(filePath, 'utf-8');
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
73
+ function loadConfig(cwd) {
74
+ const configPath = path_1.default.join(cwd, '.planning', 'config.json');
75
+ const defaults = {
76
+ model_profile: 'balanced',
77
+ commit_docs: true,
78
+ search_gitignored: false,
79
+ branching_strategy: 'none',
80
+ phase_branch_template: 'vector/phase-{phase}-{slug}',
81
+ milestone_branch_template: 'vector/{milestone}-{slug}',
82
+ research: true,
83
+ plan_checker: true,
84
+ verifier: true,
85
+ nyquist_validation: true,
86
+ parallelization: true,
87
+ brave_search: false,
88
+ model_overrides: null,
89
+ };
90
+ try {
91
+ const raw = fs_1.default.readFileSync(configPath, 'utf-8');
92
+ const parsed = JSON.parse(raw);
93
+ // Migrate deprecated "depth" key to "granularity" with value mapping
94
+ if ('depth' in parsed && !('granularity' in parsed)) {
95
+ const depthToGranularity = { quick: 'coarse', standard: 'standard', comprehensive: 'fine' };
96
+ parsed.granularity = depthToGranularity[parsed.depth] || parsed.depth;
97
+ delete parsed.depth;
98
+ try {
99
+ fs_1.default.writeFileSync(configPath, JSON.stringify(parsed, null, 2), 'utf-8');
100
+ }
101
+ catch { }
102
+ }
103
+ const get = (key, nested) => {
104
+ if (parsed[key] !== undefined)
105
+ return parsed[key];
106
+ if (nested) {
107
+ const section = parsed[nested.section];
108
+ if (section && typeof section === 'object' && section !== null) {
109
+ const sectionObj = section;
110
+ if (sectionObj[nested.field] !== undefined) {
111
+ return sectionObj[nested.field];
112
+ }
113
+ }
114
+ }
115
+ return undefined;
116
+ };
117
+ const parallelization = (() => {
118
+ const val = get('parallelization');
119
+ if (typeof val === 'boolean')
120
+ return val;
121
+ if (typeof val === 'object' && val !== null && 'enabled' in val)
122
+ return val.enabled;
123
+ return defaults.parallelization;
124
+ })();
125
+ return {
126
+ model_profile: (get('model_profile') ?? defaults.model_profile),
127
+ commit_docs: (get('commit_docs', { section: 'planning', field: 'commit_docs' }) ?? defaults.commit_docs),
128
+ search_gitignored: (get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) ?? defaults.search_gitignored),
129
+ branching_strategy: (get('branching_strategy', { section: 'git', field: 'branching_strategy' }) ?? defaults.branching_strategy),
130
+ phase_branch_template: (get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template),
131
+ milestone_branch_template: (get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template),
132
+ research: (get('research', { section: 'workflow', field: 'research' }) ?? defaults.research),
133
+ plan_checker: (get('plan_checker', { section: 'workflow', field: 'plan_check' }) ?? defaults.plan_checker),
134
+ verifier: (get('verifier', { section: 'workflow', field: 'verifier' }) ?? defaults.verifier),
135
+ nyquist_validation: (get('nyquist_validation', { section: 'workflow', field: 'nyquist_validation' }) ?? defaults.nyquist_validation),
136
+ parallelization,
137
+ brave_search: (get('brave_search') ?? defaults.brave_search),
138
+ model_overrides: parsed.model_overrides || null,
139
+ };
140
+ }
141
+ catch {
142
+ return defaults;
143
+ }
144
+ }
145
+ // ─── Git utilities ────────────────────────────────────────────────────────────
146
+ function isGitIgnored(cwd, targetPath) {
147
+ try {
148
+ // --no-index checks .gitignore rules regardless of whether the file is tracked.
149
+ // Without it, git check-ignore returns "not ignored" for tracked files even when
150
+ // .gitignore explicitly lists them — a common source of confusion when .planning/
151
+ // was committed before being added to .gitignore.
152
+ (0, child_process_1.execSync)('git check-ignore -q --no-index -- ' + targetPath.replace(/[^a-zA-Z0-9._\-/]/g, ''), {
153
+ cwd,
154
+ stdio: 'pipe',
155
+ });
156
+ return true;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ function execGit(cwd, args) {
163
+ const result = (0, child_process_1.spawnSync)('git', args, {
164
+ cwd,
165
+ stdio: 'pipe',
166
+ encoding: 'utf-8',
167
+ });
168
+ return {
169
+ exitCode: result.status ?? 1,
170
+ stdout: (result.stdout ?? '').toString().trim(),
171
+ stderr: (result.stderr ?? '').toString().trim(),
172
+ };
173
+ }
174
+ // ─── Phase utilities ──────────────────────────────────────────────────────────
175
+ function escapeRegex(value) {
176
+ return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
177
+ }
178
+ function normalizePhaseName(phase) {
179
+ const match = String(phase).match(/^(\d+)([A-Z])?((?:\.\d+)*)/i);
180
+ if (!match)
181
+ return String(phase);
182
+ const padded = match[1].padStart(2, '0');
183
+ const letter = match[2] ? match[2].toUpperCase() : '';
184
+ const decimal = match[3] || '';
185
+ return padded + letter + decimal;
186
+ }
187
+ function comparePhaseNum(a, b) {
188
+ const pa = String(a).match(/^(\d+)([A-Z])?((?:\.\d+)*)/i);
189
+ const pb = String(b).match(/^(\d+)([A-Z])?((?:\.\d+)*)/i);
190
+ if (!pa || !pb)
191
+ return String(a).localeCompare(String(b));
192
+ const intDiff = parseInt(pa[1], 10) - parseInt(pb[1], 10);
193
+ if (intDiff !== 0)
194
+ return intDiff;
195
+ // No letter sorts before letter: 12 < 12A < 12B
196
+ const la = (pa[2] || '').toUpperCase();
197
+ const lb = (pb[2] || '').toUpperCase();
198
+ if (la !== lb) {
199
+ if (!la)
200
+ return -1;
201
+ if (!lb)
202
+ return 1;
203
+ return la < lb ? -1 : 1;
204
+ }
205
+ // Segment-by-segment decimal comparison: 12A < 12A.1 < 12A.1.2 < 12A.2
206
+ const aDecParts = pa[3] ? pa[3].slice(1).split('.').map(p => parseInt(p, 10)) : [];
207
+ const bDecParts = pb[3] ? pb[3].slice(1).split('.').map(p => parseInt(p, 10)) : [];
208
+ const maxLen = Math.max(aDecParts.length, bDecParts.length);
209
+ if (aDecParts.length === 0 && bDecParts.length > 0)
210
+ return -1;
211
+ if (bDecParts.length === 0 && aDecParts.length > 0)
212
+ return 1;
213
+ for (let i = 0; i < maxLen; i++) {
214
+ const av = Number.isFinite(aDecParts[i]) ? aDecParts[i] : 0;
215
+ const bv = Number.isFinite(bDecParts[i]) ? bDecParts[i] : 0;
216
+ if (av !== bv)
217
+ return av - bv;
218
+ }
219
+ return 0;
220
+ }
221
+ function searchPhaseInDir(baseDir, relBase, normalized) {
222
+ try {
223
+ const entries = fs_1.default.readdirSync(baseDir, { withFileTypes: true });
224
+ const dirs = entries.filter(e => e.isDirectory()).map(e => e.name).sort((a, b) => comparePhaseNum(a, b));
225
+ const match = dirs.find(d => d.startsWith(normalized));
226
+ if (!match)
227
+ return null;
228
+ const dirMatch = match.match(/^(\d+[A-Z]?(?:\.\d+)*)-?(.*)/i);
229
+ const phaseNumber = dirMatch ? dirMatch[1] : normalized;
230
+ const phaseName = dirMatch && dirMatch[2] ? dirMatch[2] : null;
231
+ const phaseDir = path_1.default.join(baseDir, match);
232
+ const phaseFiles = fs_1.default.readdirSync(phaseDir);
233
+ const plans = phaseFiles.filter(f => f.endsWith('-PLAN.md') || f === 'PLAN.md').sort();
234
+ const summaries = phaseFiles.filter(f => f.endsWith('-SUMMARY.md') || f === 'SUMMARY.md').sort();
235
+ const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');
236
+ const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');
237
+ const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');
238
+ const completedPlanIds = new Set(summaries.map(s => s.replace('-SUMMARY.md', '').replace('SUMMARY.md', '')));
239
+ const incompletePlans = plans.filter(p => {
240
+ const planId = p.replace('-PLAN.md', '').replace('PLAN.md', '');
241
+ return !completedPlanIds.has(planId);
242
+ });
243
+ return {
244
+ found: true,
245
+ directory: toPosixPath(path_1.default.join(relBase, match)),
246
+ phase_number: phaseNumber,
247
+ phase_name: phaseName,
248
+ phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null,
249
+ plans,
250
+ summaries,
251
+ incomplete_plans: incompletePlans,
252
+ has_research: hasResearch,
253
+ has_context: hasContext,
254
+ has_verification: hasVerification,
255
+ };
256
+ }
257
+ catch {
258
+ return null;
259
+ }
260
+ }
261
+ function findPhaseInternal(cwd, phase) {
262
+ if (!phase)
263
+ return null;
264
+ const phasesDir = path_1.default.join(cwd, '.planning', 'phases');
265
+ const normalized = normalizePhaseName(phase);
266
+ // Search current phases first
267
+ const current = searchPhaseInDir(phasesDir, '.planning/phases', normalized);
268
+ if (current)
269
+ return current;
270
+ // Search archived milestone phases (newest first)
271
+ const milestonesDir = path_1.default.join(cwd, '.planning', 'milestones');
272
+ if (!fs_1.default.existsSync(milestonesDir))
273
+ return null;
274
+ try {
275
+ const milestoneEntries = fs_1.default.readdirSync(milestonesDir, { withFileTypes: true });
276
+ const archiveDirs = milestoneEntries
277
+ .filter(e => e.isDirectory() && /^v[\d.]+-phases$/.test(e.name))
278
+ .map(e => e.name)
279
+ .sort()
280
+ .reverse();
281
+ for (const archiveName of archiveDirs) {
282
+ const versionMatch = archiveName.match(/^(v[\d.]+)-phases$/);
283
+ const version = versionMatch ? versionMatch[1] : archiveName;
284
+ const archivePath = path_1.default.join(milestonesDir, archiveName);
285
+ const relBase = '.planning/milestones/' + archiveName;
286
+ const result = searchPhaseInDir(archivePath, relBase, normalized);
287
+ if (result) {
288
+ result.archived = version;
289
+ return result;
290
+ }
291
+ }
292
+ }
293
+ catch { }
294
+ return null;
295
+ }
296
+ function getArchivedPhaseDirs(cwd) {
297
+ const milestonesDir = path_1.default.join(cwd, '.planning', 'milestones');
298
+ const results = [];
299
+ if (!fs_1.default.existsSync(milestonesDir))
300
+ return results;
301
+ try {
302
+ const milestoneEntries = fs_1.default.readdirSync(milestonesDir, { withFileTypes: true });
303
+ // Find v*-phases directories, sort newest first
304
+ const phaseDirs = milestoneEntries
305
+ .filter(e => e.isDirectory() && /^v[\d.]+-phases$/.test(e.name))
306
+ .map(e => e.name)
307
+ .sort()
308
+ .reverse();
309
+ for (const archiveName of phaseDirs) {
310
+ const versionMatch = archiveName.match(/^(v[\d.]+)-phases$/);
311
+ const version = versionMatch ? versionMatch[1] : archiveName;
312
+ const archivePath = path_1.default.join(milestonesDir, archiveName);
313
+ const entries = fs_1.default.readdirSync(archivePath, { withFileTypes: true });
314
+ const dirs = entries.filter(e => e.isDirectory()).map(e => e.name).sort((a, b) => comparePhaseNum(a, b));
315
+ for (const dir of dirs) {
316
+ results.push({
317
+ name: dir,
318
+ milestone: version,
319
+ basePath: path_1.default.join('.planning', 'milestones', archiveName),
320
+ fullPath: path_1.default.join(archivePath, dir),
321
+ });
322
+ }
323
+ }
324
+ }
325
+ catch { }
326
+ return results;
327
+ }
328
+ // ─── Roadmap milestone scoping ───────────────────────────────────────────────
329
+ /**
330
+ * Strip shipped milestone content wrapped in <details> blocks.
331
+ * Used to isolate current milestone phases when searching ROADMAP.md
332
+ * for phase headings or checkboxes — prevents matching archived milestone
333
+ * phases that share the same numbers as current milestone phases.
334
+ */
335
+ function stripShippedMilestones(content) {
336
+ return content.replace(/<details>[\s\S]*?<\/details>/gi, '');
337
+ }
338
+ /**
339
+ * Replace a pattern only in the current milestone section of ROADMAP.md
340
+ * (everything after the last </details> close tag). Used for write operations
341
+ * that must not accidentally modify archived milestone checkboxes/tables.
342
+ */
343
+ function replaceInCurrentMilestone(content, pattern, replacement) {
344
+ const lastDetailsClose = content.lastIndexOf('</details>');
345
+ if (lastDetailsClose === -1) {
346
+ return content.replace(pattern, replacement);
347
+ }
348
+ const offset = lastDetailsClose + '</details>'.length;
349
+ const before = content.slice(0, offset);
350
+ const after = content.slice(offset);
351
+ return before + after.replace(pattern, replacement);
352
+ }
353
+ function getRoadmapPhaseInternal(cwd, phaseNum) {
354
+ if (!phaseNum)
355
+ return null;
356
+ const roadmapPath = path_1.default.join(cwd, '.planning', 'ROADMAP.md');
357
+ if (!fs_1.default.existsSync(roadmapPath))
358
+ return null;
359
+ try {
360
+ const content = stripShippedMilestones(fs_1.default.readFileSync(roadmapPath, 'utf-8'));
361
+ const escapedPhase = escapeRegex(phaseNum.toString());
362
+ const phasePattern = new RegExp(`#{2,4}\\s*Phase\\s+${escapedPhase}:\\s*([^\\n]+)`, 'i');
363
+ const headerMatch = content.match(phasePattern);
364
+ if (!headerMatch)
365
+ return null;
366
+ const phaseName = headerMatch[1].trim();
367
+ const headerIndex = headerMatch.index;
368
+ const restOfContent = content.slice(headerIndex);
369
+ const nextHeaderMatch = restOfContent.match(/\n#{2,4}\s+Phase\s+\d/i);
370
+ const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index : content.length;
371
+ const section = content.slice(headerIndex, sectionEnd).trim();
372
+ const goalMatch = section.match(/\*\*Goal(?:\*\*:|\*?\*?:\*\*)\s*([^\n]+)/i);
373
+ const goal = goalMatch ? goalMatch[1].trim() : null;
374
+ return {
375
+ found: true,
376
+ phase_number: phaseNum.toString(),
377
+ phase_name: phaseName,
378
+ goal,
379
+ section,
380
+ };
381
+ }
382
+ catch {
383
+ return null;
384
+ }
385
+ }
386
+ function resolveModelInternal(cwd, agentType) {
387
+ const config = loadConfig(cwd);
388
+ // Check per-agent override first
389
+ const override = config.model_overrides?.[agentType];
390
+ if (override) {
391
+ return override === 'opus' ? 'inherit' : override;
392
+ }
393
+ // Fall back to profile lookup
394
+ const profile = String(config.model_profile || 'balanced').toLowerCase();
395
+ const agentModels = model_profiles_cjs_1.MODEL_PROFILES[agentType];
396
+ if (!agentModels)
397
+ return 'sonnet';
398
+ if (profile === 'inherit')
399
+ return 'inherit';
400
+ const resolved = agentModels[profile] || agentModels['balanced'] || 'sonnet';
401
+ return resolved === 'opus' ? 'inherit' : resolved;
402
+ }
403
+ // ─── Misc utilities ───────────────────────────────────────────────────────────
404
+ function pathExistsInternal(cwd, targetPath) {
405
+ const fullPath = path_1.default.isAbsolute(targetPath) ? targetPath : path_1.default.join(cwd, targetPath);
406
+ try {
407
+ fs_1.default.statSync(fullPath);
408
+ return true;
409
+ }
410
+ catch {
411
+ return false;
412
+ }
413
+ }
414
+ function generateSlugInternal(text) {
415
+ if (!text)
416
+ return null;
417
+ return String(text).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
418
+ }
419
+ function getMilestoneInfo(cwd) {
420
+ try {
421
+ const roadmap = fs_1.default.readFileSync(path_1.default.join(cwd, '.planning', 'ROADMAP.md'), 'utf-8');
422
+ // First: check for list-format roadmaps using 🚧 (in-progress) marker
423
+ // e.g. "- 🚧 **v2.1 Belgium** — Phases 24-28 (in progress)"
424
+ const inProgressMatch = roadmap.match(/🚧\s*\*\*v(\d+\.\d+)\s+([^*]+)\*\*/);
425
+ if (inProgressMatch) {
426
+ return {
427
+ version: 'v' + inProgressMatch[1],
428
+ name: inProgressMatch[2].trim(),
429
+ };
430
+ }
431
+ // Second: heading-format roadmaps — strip shipped milestones in <details> blocks
432
+ const cleaned = stripShippedMilestones(roadmap);
433
+ // Extract version and name from the same ## heading for consistency
434
+ const headingMatch = cleaned.match(/## .*v(\d+\.\d+)[:\s]+([^\n(]+)/);
435
+ if (headingMatch) {
436
+ return {
437
+ version: 'v' + headingMatch[1],
438
+ name: headingMatch[2].trim(),
439
+ };
440
+ }
441
+ // Fallback: try bare version match
442
+ const versionMatch = cleaned.match(/v(\d+\.\d+)/);
443
+ return {
444
+ version: versionMatch ? versionMatch[0] : 'v1.0',
445
+ name: 'milestone',
446
+ };
447
+ }
448
+ catch {
449
+ return { version: 'v1.0', name: 'milestone' };
450
+ }
451
+ }
452
+ /**
453
+ * Returns a filter function that checks whether a phase directory belongs
454
+ * to the current milestone based on ROADMAP.md phase headings.
455
+ * If no ROADMAP exists or no phases are listed, returns a pass-all filter.
456
+ */
457
+ function getMilestonePhaseFilter(cwd) {
458
+ const milestonePhaseNums = new Set();
459
+ try {
460
+ const roadmap = stripShippedMilestones(fs_1.default.readFileSync(path_1.default.join(cwd, '.planning', 'ROADMAP.md'), 'utf-8'));
461
+ const phasePattern = /#{2,4}\s*Phase\s+(\d+[A-Z]?(?:\.\d+)*)\s*:/gi;
462
+ let m;
463
+ while ((m = phasePattern.exec(roadmap)) !== null) {
464
+ milestonePhaseNums.add(m[1]);
465
+ }
466
+ }
467
+ catch { }
468
+ if (milestonePhaseNums.size === 0) {
469
+ const passAll = (_dirName) => true;
470
+ passAll.phaseCount = 0;
471
+ return passAll;
472
+ }
473
+ const normalized = new Set([...milestonePhaseNums].map(n => (n.replace(/^0+/, '') || '0').toLowerCase()));
474
+ function isDirInMilestone(dirName) {
475
+ const m = dirName.match(/^0*(\d+[A-Za-z]?(?:\.\d+)*)/);
476
+ if (!m)
477
+ return false;
478
+ return normalized.has(m[1].toLowerCase());
479
+ }
480
+ isDirInMilestone.phaseCount = milestonePhaseNums.size;
481
+ return isDirInMilestone;
482
+ }
483
+ //# sourceMappingURL=core.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.cjs","sourceRoot":"","sources":["core.cts"],"names":[],"mappings":"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"}