@slope-dev/slope 1.7.0 → 1.13.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 +17 -2
- package/dist/cli/commands/analyze.d.ts +2 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +106 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +4 -0
- package/dist/cli/commands/guard.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +82 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +8 -19
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/review-state.d.ts +6 -0
- package/dist/cli/commands/review-state.d.ts.map +1 -1
- package/dist/cli/commands/review-state.js +264 -1
- package/dist/cli/commands/review-state.js.map +1 -1
- package/dist/cli/commands/transcript.d.ts +10 -0
- package/dist/cli/commands/transcript.d.ts.map +1 -0
- package/dist/cli/commands/transcript.js +188 -0
- package/dist/cli/commands/transcript.js.map +1 -0
- package/dist/cli/commands/vision.d.ts +2 -0
- package/dist/cli/commands/vision.d.ts.map +1 -0
- package/dist/cli/commands/vision.js +53 -0
- package/dist/cli/commands/vision.js.map +1 -0
- package/dist/cli/guards/next-action.d.ts +4 -0
- package/dist/cli/guards/next-action.d.ts.map +1 -1
- package/dist/cli/guards/next-action.js +35 -0
- package/dist/cli/guards/next-action.js.map +1 -1
- package/dist/cli/guards/pr-review.d.ts +7 -0
- package/dist/cli/guards/pr-review.d.ts.map +1 -0
- package/dist/cli/guards/pr-review.js +34 -0
- package/dist/cli/guards/pr-review.js.map +1 -0
- package/dist/cli/guards/transcript.d.ts +12 -0
- package/dist/cli/guards/transcript.d.ts.map +1 -0
- package/dist/cli/guards/transcript.js +79 -0
- package/dist/cli/guards/transcript.js.map +1 -0
- package/dist/cli/index.js +28 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/registry.d.ts +12 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +40 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/core/analyzers/backlog-merged.d.ts +13 -0
- package/dist/core/analyzers/backlog-merged.d.ts.map +1 -0
- package/dist/core/analyzers/backlog-merged.js +16 -0
- package/dist/core/analyzers/backlog-merged.js.map +1 -0
- package/dist/core/analyzers/backlog.d.ts +16 -0
- package/dist/core/analyzers/backlog.d.ts.map +1 -0
- package/dist/core/analyzers/backlog.js +103 -0
- package/dist/core/analyzers/backlog.js.map +1 -0
- package/dist/core/analyzers/ci.d.ts +6 -0
- package/dist/core/analyzers/ci.d.ts.map +1 -0
- package/dist/core/analyzers/ci.js +62 -0
- package/dist/core/analyzers/ci.js.map +1 -0
- package/dist/core/analyzers/complexity.d.ts +21 -0
- package/dist/core/analyzers/complexity.d.ts.map +1 -0
- package/dist/core/analyzers/complexity.js +76 -0
- package/dist/core/analyzers/complexity.js.map +1 -0
- package/dist/core/analyzers/docs.d.ts +6 -0
- package/dist/core/analyzers/docs.d.ts.map +1 -0
- package/dist/core/analyzers/docs.js +54 -0
- package/dist/core/analyzers/docs.js.map +1 -0
- package/dist/core/analyzers/git.d.ts +3 -0
- package/dist/core/analyzers/git.d.ts.map +1 -0
- package/dist/core/analyzers/git.js +88 -0
- package/dist/core/analyzers/git.js.map +1 -0
- package/dist/core/analyzers/github-backlog.d.ts +14 -0
- package/dist/core/analyzers/github-backlog.d.ts.map +1 -0
- package/dist/core/analyzers/github-backlog.js +43 -0
- package/dist/core/analyzers/github-backlog.js.map +1 -0
- package/dist/core/analyzers/index.d.ts +9 -0
- package/dist/core/analyzers/index.d.ts.map +1 -0
- package/dist/core/analyzers/index.js +95 -0
- package/dist/core/analyzers/index.js.map +1 -0
- package/dist/core/analyzers/stack.d.ts +3 -0
- package/dist/core/analyzers/stack.d.ts.map +1 -0
- package/dist/core/analyzers/stack.js +161 -0
- package/dist/core/analyzers/stack.js.map +1 -0
- package/dist/core/analyzers/structure.d.ts +3 -0
- package/dist/core/analyzers/structure.d.ts.map +1 -0
- package/dist/core/analyzers/structure.js +106 -0
- package/dist/core/analyzers/structure.js.map +1 -0
- package/dist/core/analyzers/testing.d.ts +3 -0
- package/dist/core/analyzers/testing.d.ts.map +1 -0
- package/dist/core/analyzers/testing.js +119 -0
- package/dist/core/analyzers/testing.js.map +1 -0
- package/dist/core/analyzers/types.d.ts +83 -0
- package/dist/core/analyzers/types.d.ts.map +1 -0
- package/dist/core/analyzers/types.js +3 -0
- package/dist/core/analyzers/types.js.map +1 -0
- package/dist/core/analyzers/walk.d.ts +11 -0
- package/dist/core/analyzers/walk.d.ts.map +1 -0
- package/dist/core/analyzers/walk.js +33 -0
- package/dist/core/analyzers/walk.js.map +1 -0
- package/dist/core/config.d.ts +3 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +3 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +8 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/dashboard.d.ts.map +1 -1
- package/dist/core/dashboard.js +3 -1
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/dispersion.d.ts.map +1 -1
- package/dist/core/dispersion.js +6 -4
- package/dist/core/dispersion.js.map +1 -1
- package/dist/core/generators/common-issues.d.ts +9 -0
- package/dist/core/generators/common-issues.d.ts.map +1 -0
- package/dist/core/generators/common-issues.js +71 -0
- package/dist/core/generators/common-issues.js.map +1 -0
- package/dist/core/generators/config.d.ts +14 -0
- package/dist/core/generators/config.d.ts.map +1 -0
- package/dist/core/generators/config.js +45 -0
- package/dist/core/generators/config.js.map +1 -0
- package/dist/core/generators/first-sprint.d.ts +28 -0
- package/dist/core/generators/first-sprint.d.ts.map +1 -0
- package/dist/core/generators/first-sprint.js +71 -0
- package/dist/core/generators/first-sprint.js.map +1 -0
- package/dist/core/generators/roadmap.d.ts +14 -0
- package/dist/core/generators/roadmap.d.ts.map +1 -0
- package/dist/core/generators/roadmap.js +228 -0
- package/dist/core/generators/roadmap.js.map +1 -0
- package/dist/core/github.d.ts +31 -0
- package/dist/core/github.d.ts.map +1 -1
- package/dist/core/github.js +59 -0
- package/dist/core/github.js.map +1 -1
- package/dist/core/guard.d.ts +1 -1
- package/dist/core/guard.d.ts.map +1 -1
- package/dist/core/guard.js +14 -0
- package/dist/core/guard.js.map +1 -1
- package/dist/core/index.d.ts +25 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +22 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/report.d.ts.map +1 -1
- package/dist/core/report.js +6 -4
- package/dist/core/report.js.map +1 -1
- package/dist/core/review.d.ts +41 -0
- package/dist/core/review.d.ts.map +1 -0
- package/dist/core/review.js +142 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/transcript.d.ts +23 -0
- package/dist/core/transcript.d.ts.map +1 -0
- package/dist/core/transcript.js +64 -0
- package/dist/core/transcript.js.map +1 -0
- package/dist/core/types.d.ts +40 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/vision.d.ts +5 -0
- package/dist/core/vision.d.ts.map +1 -0
- package/dist/core/vision.js +58 -0
- package/dist/core/vision.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +1 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +170 -0
- package/dist/mcp/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-action.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/next-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"next-action.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/next-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAK/E,mDAAmD;AACnD,KAAK,WAAW,GACZ;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCzF;AAED,qEAAqE;AACrE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuFzE;AAuBD,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAoF3D"}
|
|
@@ -2,6 +2,7 @@ import { existsSync, readFileSync, writeFileSync, renameSync, mkdirSync } from '
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { loadConfig, detectLatestSprint, parseRoadmap, formatStrategicContext } from '../../core/index.js';
|
|
4
4
|
import { resolveStore } from '../store.js';
|
|
5
|
+
import { loadFindings } from '../commands/review-state.js';
|
|
5
6
|
/**
|
|
6
7
|
* Next-action guard: fires on Stop.
|
|
7
8
|
* Suggests next actions before session end based on sprint state.
|
|
@@ -101,6 +102,26 @@ export async function detectSprintState(cwd) {
|
|
|
101
102
|
if (!existsSync(reviewPath)) {
|
|
102
103
|
return { type: 'needs-review', sprintNumber: latestScoredSprint };
|
|
103
104
|
}
|
|
105
|
+
// Check if findings exist but scorecard hasn't been amended
|
|
106
|
+
const findingsData = loadFindings(cwd);
|
|
107
|
+
if (findingsData && findingsData.findings.length > 0) {
|
|
108
|
+
try {
|
|
109
|
+
// Check if scorecard already has review hazards
|
|
110
|
+
const scorecardPath = join(retrosDir, `sprint-${latestScoredSprint}.json`);
|
|
111
|
+
if (existsSync(scorecardPath)) {
|
|
112
|
+
const scorecard = JSON.parse(readFileSync(scorecardPath, 'utf8'));
|
|
113
|
+
const hasReviewHazards = scorecard.shots?.some((s) => s.hazards?.some((h) => h.gotcha_id?.startsWith('review:')));
|
|
114
|
+
if (!hasReviewHazards) {
|
|
115
|
+
return {
|
|
116
|
+
type: 'needs-amend',
|
|
117
|
+
sprintNumber: latestScoredSprint,
|
|
118
|
+
findingCount: findingsData.findings.length,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch { /* scorecard parse error — skip */ }
|
|
124
|
+
}
|
|
104
125
|
}
|
|
105
126
|
// Default: between sprints
|
|
106
127
|
return buildBetweenSprints(config, cwd, latestScoredSprint);
|
|
@@ -174,6 +195,20 @@ export function buildSuggestions(state) {
|
|
|
174
195
|
'Present these using AskUserQuestion. If the user chooses to end the session, stop without further action.',
|
|
175
196
|
].join('\n');
|
|
176
197
|
}
|
|
198
|
+
case 'needs-amend': {
|
|
199
|
+
return [
|
|
200
|
+
header,
|
|
201
|
+
'',
|
|
202
|
+
`Current state: Sprint ${state.sprintNumber} has ${state.findingCount} review finding(s) not yet applied to scorecard`,
|
|
203
|
+
'',
|
|
204
|
+
'Suggested options:',
|
|
205
|
+
'1. Run `slope review amend` to apply findings as hazards and recalculate score',
|
|
206
|
+
'2. Run `slope review findings list` to see the findings first',
|
|
207
|
+
'3. End session — nothing more to do right now',
|
|
208
|
+
'',
|
|
209
|
+
'Present these using AskUserQuestion. If the user chooses to end the session, stop without further action.',
|
|
210
|
+
].join('\n');
|
|
211
|
+
}
|
|
177
212
|
case 'between-sprints': {
|
|
178
213
|
const contextLine = state.roadmapContext
|
|
179
214
|
? `\n${state.roadmapContext}\n`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-action.js","sourceRoot":"","sources":["../../../src/cli/guards/next-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAkB,kBAAkB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC3H,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"next-action.js","sourceRoot":"","sources":["../../../src/cli/guards/next-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HookInput, GuardResult } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* PR review guard: fires PostToolUse on Bash.
|
|
4
|
+
* Detects `gh pr create` output and prompts for review workflow choice.
|
|
5
|
+
*/
|
|
6
|
+
export declare function prReviewGuard(input: HookInput, _cwd: string): Promise<GuardResult>;
|
|
7
|
+
//# sourceMappingURL=pr-review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-review.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/pr-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BxF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR review guard: fires PostToolUse on Bash.
|
|
3
|
+
* Detects `gh pr create` output and prompts for review workflow choice.
|
|
4
|
+
*/
|
|
5
|
+
export async function prReviewGuard(input, _cwd) {
|
|
6
|
+
const command = input.tool_input?.command ?? '';
|
|
7
|
+
const response = input.tool_response?.stdout ?? input.tool_response?.result ?? '';
|
|
8
|
+
// Only fire after gh pr create commands
|
|
9
|
+
if (!command.includes('gh pr create'))
|
|
10
|
+
return {};
|
|
11
|
+
// Verify a PR URL was returned (successful creation)
|
|
12
|
+
if (!response.includes('github.com/') || !response.includes('/pull/'))
|
|
13
|
+
return {};
|
|
14
|
+
// Extract PR URL from response
|
|
15
|
+
const urlMatch = response.match(/(https:\/\/github\.com\/[^\s]+\/pull\/\d+)/);
|
|
16
|
+
const prUrl = urlMatch ? urlMatch[1] : 'the PR';
|
|
17
|
+
return {
|
|
18
|
+
context: [
|
|
19
|
+
`SLOPE pr-review: A pull request was just created (${prUrl}).`,
|
|
20
|
+
'',
|
|
21
|
+
'IMPORTANT: You MUST now ask the user how they want to handle the PR review using AskUserQuestion.',
|
|
22
|
+
'Present these options:',
|
|
23
|
+
'',
|
|
24
|
+
'1. Code Review — Detailed line-by-line code review of the diff',
|
|
25
|
+
'2. Architect Review — High-level architecture and design review',
|
|
26
|
+
'3. Both — Run code review followed by architect review',
|
|
27
|
+
'4. Manual Review — User will review manually, no automated review',
|
|
28
|
+
'5. Skip / Merge Now — No review needed, proceed to merge',
|
|
29
|
+
'',
|
|
30
|
+
'Wait for the user\'s choice before taking any further action.',
|
|
31
|
+
].join('\n'),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=pr-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-review.js","sourceRoot":"","sources":["../../../src/cli/guards/pr-review.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAgB,EAAE,IAAY;IAChE,MAAM,OAAO,GAAI,KAAK,CAAC,UAAU,EAAE,OAAkB,IAAI,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAI,KAAK,CAAC,aAAa,EAAE,MAAiB,IAAK,KAAK,CAAC,aAAa,EAAE,MAAiB,IAAI,EAAE,CAAC;IAE1G,wCAAwC;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,qDAAqD;IACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjF,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEhD,OAAO;QACL,OAAO,EAAE;YACP,qDAAqD,KAAK,IAAI;YAC9D,EAAE;YACF,mGAAmG;YACnG,wBAAwB;YACxB,EAAE;YACF,gEAAgE;YAChE,iEAAiE;YACjE,wDAAwD;YACxD,mEAAmE;YACnE,0DAA0D;YAC1D,EAAE;YACF,+DAA+D;SAChE,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HookInput, GuardResult } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Transcript guard: fires PostToolUse on all tools (no matcher).
|
|
4
|
+
* Appends tool call metadata to the session transcript JSONL file.
|
|
5
|
+
* Silent — returns empty GuardResult, no context injection.
|
|
6
|
+
*
|
|
7
|
+
* Note: appendFileSync is safe for single-agent sessions (typical usage).
|
|
8
|
+
* Multi-agent scenarios sharing a session_id could interleave partial writes;
|
|
9
|
+
* if multi-agent transcript support is needed, add file locking or per-agent files.
|
|
10
|
+
*/
|
|
11
|
+
export declare function transcriptGuard(input: HookInput, cwd: string): Promise<GuardResult>;
|
|
12
|
+
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/transcript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyClE;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BzF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { appendTurn } from '../../core/transcript.js';
|
|
3
|
+
import { loadConfig } from '../config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Summarize tool_input params into a short string for the transcript.
|
|
6
|
+
*/
|
|
7
|
+
function summarizeParams(toolName, toolInput) {
|
|
8
|
+
switch (toolName) {
|
|
9
|
+
case 'Read':
|
|
10
|
+
return `file: ${toolInput.file_path ?? ''}`;
|
|
11
|
+
case 'Edit':
|
|
12
|
+
case 'Write':
|
|
13
|
+
return `file: ${toolInput.file_path ?? ''}`;
|
|
14
|
+
case 'Bash':
|
|
15
|
+
return `cmd: ${String(toolInput.command ?? '').slice(0, 80)}`;
|
|
16
|
+
case 'Grep':
|
|
17
|
+
return `pattern: ${toolInput.pattern ?? ''}, path: ${toolInput.path ?? '.'}`;
|
|
18
|
+
case 'Glob':
|
|
19
|
+
return `pattern: ${toolInput.pattern ?? ''}`;
|
|
20
|
+
case 'Task':
|
|
21
|
+
return `type: ${toolInput.subagent_type ?? ''}`;
|
|
22
|
+
default: {
|
|
23
|
+
const json = JSON.stringify(toolInput);
|
|
24
|
+
return json.length > 80 ? json.slice(0, 80) + '...' : json;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Detect whether the tool call succeeded from tool_response.
|
|
30
|
+
*/
|
|
31
|
+
function detectSuccess(toolResponse) {
|
|
32
|
+
if (!toolResponse)
|
|
33
|
+
return true;
|
|
34
|
+
if (toolResponse.error)
|
|
35
|
+
return false;
|
|
36
|
+
if (typeof toolResponse.stderr === 'string' && toolResponse.stderr.length > 0)
|
|
37
|
+
return false;
|
|
38
|
+
if (toolResponse.is_error === true)
|
|
39
|
+
return false;
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Transcript guard: fires PostToolUse on all tools (no matcher).
|
|
44
|
+
* Appends tool call metadata to the session transcript JSONL file.
|
|
45
|
+
* Silent — returns empty GuardResult, no context injection.
|
|
46
|
+
*
|
|
47
|
+
* Note: appendFileSync is safe for single-agent sessions (typical usage).
|
|
48
|
+
* Multi-agent scenarios sharing a session_id could interleave partial writes;
|
|
49
|
+
* if multi-agent transcript support is needed, add file locking or per-agent files.
|
|
50
|
+
*/
|
|
51
|
+
export async function transcriptGuard(input, cwd) {
|
|
52
|
+
// Skip if no session_id
|
|
53
|
+
if (!input.session_id)
|
|
54
|
+
return {};
|
|
55
|
+
const config = loadConfig();
|
|
56
|
+
const transcriptsDir = join(cwd, config.transcriptsPath ?? '.slope/transcripts');
|
|
57
|
+
const toolName = input.tool_name ?? 'unknown';
|
|
58
|
+
const toolInput = input.tool_input ?? {};
|
|
59
|
+
const success = detectSuccess(input.tool_response);
|
|
60
|
+
const toolCall = {
|
|
61
|
+
tool: toolName,
|
|
62
|
+
params_summary: summarizeParams(toolName, toolInput),
|
|
63
|
+
success,
|
|
64
|
+
};
|
|
65
|
+
const line = {
|
|
66
|
+
role: 'tool_result',
|
|
67
|
+
timestamp: new Date().toISOString(),
|
|
68
|
+
tool_calls: [toolCall],
|
|
69
|
+
outcome: success ? 'success' : 'failure',
|
|
70
|
+
};
|
|
71
|
+
try {
|
|
72
|
+
appendTurn(transcriptsDir, input.session_id, line);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Silent — transcript write failure should never block the agent
|
|
76
|
+
}
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/cli/guards/transcript.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -42,6 +42,9 @@ import { dashboardCommand } from './commands/dashboard.js';
|
|
|
42
42
|
import { mapCommand } from './commands/map.js';
|
|
43
43
|
import { flowsCommand } from './commands/flows.js';
|
|
44
44
|
import { reviewStateCommand } from './commands/review-state.js';
|
|
45
|
+
import { analyzeCommand } from './commands/analyze.js';
|
|
46
|
+
import { visionCommand } from './commands/vision.js';
|
|
47
|
+
import { transcriptCommand } from './commands/transcript.js';
|
|
45
48
|
const subcommand = process.argv[2];
|
|
46
49
|
switch (subcommand) {
|
|
47
50
|
case 'init':
|
|
@@ -59,7 +62,7 @@ switch (subcommand) {
|
|
|
59
62
|
case 'review': {
|
|
60
63
|
const reviewArgs = process.argv.slice(3);
|
|
61
64
|
const reviewSub = reviewArgs[0];
|
|
62
|
-
if (['start', 'round', 'status', 'reset'].includes(reviewSub)) {
|
|
65
|
+
if (['start', 'round', 'status', 'reset', 'recommend', 'findings', 'amend'].includes(reviewSub)) {
|
|
63
66
|
reviewStateCommand(reviewArgs).catch(err => {
|
|
64
67
|
console.error('Error:', err.message);
|
|
65
68
|
process.exit(1);
|
|
@@ -205,6 +208,24 @@ switch (subcommand) {
|
|
|
205
208
|
process.exit(1);
|
|
206
209
|
});
|
|
207
210
|
break;
|
|
211
|
+
case 'analyze':
|
|
212
|
+
analyzeCommand(process.argv.slice(3)).catch(err => {
|
|
213
|
+
console.error('Error:', err.message);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
});
|
|
216
|
+
break;
|
|
217
|
+
case 'vision':
|
|
218
|
+
visionCommand(process.argv.slice(3)).catch(err => {
|
|
219
|
+
console.error('Error:', err.message);
|
|
220
|
+
process.exit(1);
|
|
221
|
+
});
|
|
222
|
+
break;
|
|
223
|
+
case 'transcript':
|
|
224
|
+
transcriptCommand(process.argv.slice(3)).catch(err => {
|
|
225
|
+
console.error('Error:', err.message);
|
|
226
|
+
process.exit(1);
|
|
227
|
+
});
|
|
228
|
+
break;
|
|
208
229
|
default:
|
|
209
230
|
console.log(`
|
|
210
231
|
SLOPE CLI — Sprint Lifecycle & Operational Performance Engine
|
|
@@ -221,6 +242,9 @@ Usage:
|
|
|
221
242
|
slope review round Record a completed review round
|
|
222
243
|
slope review status Show current review state
|
|
223
244
|
slope review reset Clear review state
|
|
245
|
+
slope review recommend Recommend review types for current sprint
|
|
246
|
+
slope review findings add|list|clear Manage implementation review findings
|
|
247
|
+
slope review amend [--sprint=N] Amend scorecard with review findings
|
|
224
248
|
slope briefing [--sprint=N] [options] Pre-round briefing
|
|
225
249
|
slope plan --complexity=<level> Pre-shot advisor (club + training + hazards)
|
|
226
250
|
slope classify --scope=... ... Classify a shot from execution trace
|
|
@@ -246,6 +270,9 @@ Usage:
|
|
|
246
270
|
slope roadmap validate|review|status|show Strategic planning tools
|
|
247
271
|
slope map [--check] [--output=<path>] Generate/update codebase map
|
|
248
272
|
slope flows init|list|check Manage user flow definitions
|
|
273
|
+
slope analyze [--json] [--analyzers=...] Scan repo and generate profile
|
|
274
|
+
slope vision [--json] Display project vision document
|
|
275
|
+
slope transcript list|show|stats View session transcript data
|
|
249
276
|
slope plugin list|validate Manage custom plugins
|
|
250
277
|
|
|
251
278
|
Examples:
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CliCommandMeta {
|
|
2
|
+
/** Command name as invoked: e.g. "init", "auto-card" */
|
|
3
|
+
cmd: string;
|
|
4
|
+
/** Short description of the command */
|
|
5
|
+
desc: string;
|
|
6
|
+
/** Functional category */
|
|
7
|
+
category: 'lifecycle' | 'scoring' | 'analysis' | 'tooling' | 'planning';
|
|
8
|
+
}
|
|
9
|
+
/** Command files that are internal implementation modules, not user-invocable top-level commands. */
|
|
10
|
+
export declare const CLI_INTERNAL_MODULES: readonly ["review-state"];
|
|
11
|
+
export declare const CLI_COMMAND_REGISTRY: readonly CliCommandMeta[];
|
|
12
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CACzE;AAED,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,2BAA4B,CAAC;AAE9D,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAuCzD,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// CLI Command Registry — metadata for CLI commands (map generation, documentation, slope-web)
|
|
2
|
+
/** Command files that are internal implementation modules, not user-invocable top-level commands. */
|
|
3
|
+
export const CLI_INTERNAL_MODULES = ['review-state'];
|
|
4
|
+
export const CLI_COMMAND_REGISTRY = [
|
|
5
|
+
// ── Lifecycle ──────────────────────────────────────────────────
|
|
6
|
+
{ cmd: 'init', desc: 'Initialize .slope/ directory', category: 'lifecycle' },
|
|
7
|
+
{ cmd: 'session', desc: 'Manage live sessions', category: 'lifecycle' },
|
|
8
|
+
{ cmd: 'claim', desc: 'Claim a ticket or area for the sprint', category: 'lifecycle' },
|
|
9
|
+
{ cmd: 'release', desc: 'Release a claim by ID or target', category: 'lifecycle' },
|
|
10
|
+
{ cmd: 'status', desc: 'Show sprint course status and conflicts', category: 'lifecycle' },
|
|
11
|
+
{ cmd: 'next', desc: 'Show next sprint number (auto-detect)', category: 'lifecycle' },
|
|
12
|
+
// ── Scoring ────────────────────────────────────────────────────
|
|
13
|
+
{ cmd: 'card', desc: 'Display handicap card', category: 'scoring' },
|
|
14
|
+
{ cmd: 'validate', desc: 'Validate scorecard(s)', category: 'scoring' },
|
|
15
|
+
{ cmd: 'review', desc: 'Format sprint review or manage review state', category: 'scoring' },
|
|
16
|
+
{ cmd: 'auto-card', desc: 'Generate scorecard from git + CI signals', category: 'scoring' },
|
|
17
|
+
{ cmd: 'classify', desc: 'Classify a shot from execution trace', category: 'scoring' },
|
|
18
|
+
{ cmd: 'tournament', desc: 'Build tournament review from sprints', category: 'scoring' },
|
|
19
|
+
// ── Analysis ───────────────────────────────────────────────────
|
|
20
|
+
{ cmd: 'briefing', desc: 'Pre-round briefing with hazards and nutrition', category: 'analysis' },
|
|
21
|
+
{ cmd: 'plan', desc: 'Pre-shot advisor (club + training + hazards)', category: 'analysis' },
|
|
22
|
+
{ cmd: 'report', desc: 'Generate HTML performance report', category: 'analysis' },
|
|
23
|
+
{ cmd: 'dashboard', desc: 'Live local performance dashboard', category: 'analysis' },
|
|
24
|
+
{ cmd: 'standup', desc: 'Generate or ingest standup report', category: 'analysis' },
|
|
25
|
+
{ cmd: 'analyze', desc: 'Scan repo and generate profile', category: 'analysis' },
|
|
26
|
+
// ── Tooling ────────────────────────────────────────────────────
|
|
27
|
+
{ cmd: 'hook', desc: 'Manage lifecycle hooks', category: 'tooling' },
|
|
28
|
+
{ cmd: 'guard', desc: 'Run guard handler or manage guard activation', category: 'tooling' },
|
|
29
|
+
{ cmd: 'extract', desc: 'Extract events into SLOPE store', category: 'tooling' },
|
|
30
|
+
{ cmd: 'distill', desc: 'Promote event patterns to common issues', category: 'tooling' },
|
|
31
|
+
{ cmd: 'map', desc: 'Generate/update codebase map', category: 'tooling' },
|
|
32
|
+
{ cmd: 'flows', desc: 'Manage user flow definitions', category: 'tooling' },
|
|
33
|
+
{ cmd: 'plugin', desc: 'Manage custom plugins', category: 'tooling' },
|
|
34
|
+
{ cmd: 'escalate', desc: 'Escalate issues based on severity triggers', category: 'tooling' },
|
|
35
|
+
{ cmd: 'transcript', desc: 'View session transcript data', category: 'tooling' },
|
|
36
|
+
// ── Planning ───────────────────────────────────────────────────
|
|
37
|
+
{ cmd: 'roadmap', desc: 'Strategic planning and roadmap tools', category: 'planning' },
|
|
38
|
+
{ cmd: 'vision', desc: 'Display project vision document', category: 'planning' },
|
|
39
|
+
];
|
|
40
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BacklogAnalysis } from './backlog.js';
|
|
2
|
+
import type { GitHubBacklogAnalysis } from './github-backlog.js';
|
|
3
|
+
export interface MergedBacklog {
|
|
4
|
+
local: BacklogAnalysis;
|
|
5
|
+
remote?: GitHubBacklogAnalysis;
|
|
6
|
+
totalItems: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Merge local backlog (TODO/FIXME) with optional remote GitHub backlog.
|
|
10
|
+
* Provides unified totalItems count across both sources.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeBacklogs(local: BacklogAnalysis, remote?: GitHubBacklogAnalysis): MergedBacklog;
|
|
13
|
+
//# sourceMappingURL=backlog-merged.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-merged.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/backlog-merged.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,aAAa,CASf"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SLOPE — Merged Backlog
|
|
2
|
+
// Combines local TODO/FIXME analysis with remote GitHub issue data.
|
|
3
|
+
/**
|
|
4
|
+
* Merge local backlog (TODO/FIXME) with optional remote GitHub backlog.
|
|
5
|
+
* Provides unified totalItems count across both sources.
|
|
6
|
+
*/
|
|
7
|
+
export function mergeBacklogs(local, remote) {
|
|
8
|
+
const localCount = local.todos.length;
|
|
9
|
+
const remoteCount = remote?.issues.length ?? 0;
|
|
10
|
+
return {
|
|
11
|
+
local,
|
|
12
|
+
remote,
|
|
13
|
+
totalItems: localCount + remoteCount,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=backlog-merged.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-merged.js","sourceRoot":"","sources":["../../../src/core/analyzers/backlog-merged.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,oEAAoE;AAWpE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAsB,EACtB,MAA8B;IAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAE/C,OAAO;QACL,KAAK;QACL,MAAM;QACN,UAAU,EAAE,UAAU,GAAG,WAAW;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface TodoEntry {
|
|
2
|
+
type: 'TODO' | 'FIXME' | 'HACK' | 'XXX';
|
|
3
|
+
text: string;
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
}
|
|
7
|
+
export interface BacklogAnalysis {
|
|
8
|
+
todos: TodoEntry[];
|
|
9
|
+
todosByModule: Record<string, TodoEntry[]>;
|
|
10
|
+
changelogUnreleased?: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Analyze a codebase for TODO/FIXME/HACK/XXX comments and changelog data.
|
|
14
|
+
*/
|
|
15
|
+
export declare function analyzeBacklog(cwd: string): Promise<BacklogAnalysis>;
|
|
16
|
+
//# sourceMappingURL=backlog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/backlog.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8C1E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// SLOPE — Backlog Analyzer
|
|
2
|
+
// Scans source files for TODO/FIXME/HACK/XXX comments and parses CHANGELOG unreleased.
|
|
3
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { walkDir } from './walk.js';
|
|
6
|
+
const SOURCE_EXTENSIONS = new Set(['.ts', '.js', '.tsx', '.jsx', '.py', '.go', '.rs', '.rb']);
|
|
7
|
+
const TODO_PATTERN = /(?:\/\/|#)\s*(TODO|FIXME|HACK|XXX)[:\s]+(.+)/i;
|
|
8
|
+
const MAX_TODOS = 200;
|
|
9
|
+
/**
|
|
10
|
+
* Analyze a codebase for TODO/FIXME/HACK/XXX comments and changelog data.
|
|
11
|
+
*/
|
|
12
|
+
export async function analyzeBacklog(cwd) {
|
|
13
|
+
const entries = walkDir(cwd, { maxDepth: 8 });
|
|
14
|
+
const todos = [];
|
|
15
|
+
for (const entry of entries) {
|
|
16
|
+
if (entry.isDirectory)
|
|
17
|
+
continue;
|
|
18
|
+
if (todos.length >= MAX_TODOS)
|
|
19
|
+
break;
|
|
20
|
+
const ext = getExtension(entry.path);
|
|
21
|
+
if (!SOURCE_EXTENSIONS.has(ext))
|
|
22
|
+
continue;
|
|
23
|
+
let content;
|
|
24
|
+
try {
|
|
25
|
+
content = readFileSync(entry.fullPath, 'utf8');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const lines = content.split('\n');
|
|
31
|
+
for (let i = 0; i < lines.length; i++) {
|
|
32
|
+
if (todos.length >= MAX_TODOS)
|
|
33
|
+
break;
|
|
34
|
+
const match = TODO_PATTERN.exec(lines[i]);
|
|
35
|
+
if (match) {
|
|
36
|
+
todos.push({
|
|
37
|
+
type: match[1].toUpperCase(),
|
|
38
|
+
text: match[2].trim(),
|
|
39
|
+
file: entry.path,
|
|
40
|
+
line: i + 1,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Group by module (first directory component under src/)
|
|
46
|
+
const todosByModule = {};
|
|
47
|
+
for (const todo of todos) {
|
|
48
|
+
const mod = inferModule(todo.file);
|
|
49
|
+
if (!todosByModule[mod])
|
|
50
|
+
todosByModule[mod] = [];
|
|
51
|
+
todosByModule[mod].push(todo);
|
|
52
|
+
}
|
|
53
|
+
// Parse CHANGELOG.md for unreleased section
|
|
54
|
+
const changelogUnreleased = parseChangelogUnreleased(cwd);
|
|
55
|
+
return { todos, todosByModule, changelogUnreleased };
|
|
56
|
+
}
|
|
57
|
+
function getExtension(filePath) {
|
|
58
|
+
const dot = filePath.lastIndexOf('.');
|
|
59
|
+
return dot >= 0 ? filePath.slice(dot) : '';
|
|
60
|
+
}
|
|
61
|
+
function inferModule(filePath) {
|
|
62
|
+
const parts = filePath.split('/');
|
|
63
|
+
// If file is under src/X/..., use X as module name
|
|
64
|
+
const srcIdx = parts.indexOf('src');
|
|
65
|
+
if (srcIdx >= 0 && srcIdx + 1 < parts.length) {
|
|
66
|
+
return parts[srcIdx + 1];
|
|
67
|
+
}
|
|
68
|
+
// Otherwise use first directory, or 'root'
|
|
69
|
+
return parts.length > 1 ? parts[0] : 'root';
|
|
70
|
+
}
|
|
71
|
+
function parseChangelogUnreleased(cwd) {
|
|
72
|
+
const changelogPath = join(cwd, 'CHANGELOG.md');
|
|
73
|
+
if (!existsSync(changelogPath))
|
|
74
|
+
return undefined;
|
|
75
|
+
let content;
|
|
76
|
+
try {
|
|
77
|
+
content = readFileSync(changelogPath, 'utf8');
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const lines = content.split('\n');
|
|
83
|
+
const items = [];
|
|
84
|
+
let inUnreleased = false;
|
|
85
|
+
for (const line of lines) {
|
|
86
|
+
// Match ## Unreleased or ## [Unreleased]
|
|
87
|
+
if (/^##\s+\[?unreleased\]?/i.test(line)) {
|
|
88
|
+
inUnreleased = true;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
// Stop at next heading
|
|
92
|
+
if (inUnreleased && /^##\s/.test(line)) {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (inUnreleased) {
|
|
96
|
+
const trimmed = line.replace(/^[-*]\s*/, '').trim();
|
|
97
|
+
if (trimmed)
|
|
98
|
+
items.push(trimmed);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return items.length > 0 ? items : undefined;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=backlog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../src/core/analyzers/backlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/ci.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoB5C;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CA6ChD"}
|