@slope-dev/slope 1.6.0 → 1.12.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/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 +149 -0
- package/dist/cli/commands/init.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/standup.d.ts.map +1 -1
- package/dist/cli/commands/standup.js +31 -2
- package/dist/cli/commands/standup.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/store.d.ts.map +1 -1
- package/dist/cli/store.js +16 -0
- package/dist/cli/store.js.map +1 -1
- 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 +9 -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/event-ingestion.d.ts +34 -0
- package/dist/core/event-ingestion.d.ts.map +1 -0
- package/dist/core/event-ingestion.js +115 -0
- package/dist/core/event-ingestion.js.map +1 -0
- 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 +71 -0
- package/dist/core/github.d.ts.map +1 -0
- package/dist/core/github.js +189 -0
- package/dist/core/github.js.map +1 -0
- 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 +36 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +33 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/interview.d.ts +31 -0
- package/dist/core/interview.d.ts.map +1 -0
- package/dist/core/interview.js +167 -0
- package/dist/core/interview.js.map +1 -0
- package/dist/core/project-registry.d.ts +26 -0
- package/dist/core/project-registry.d.ts.map +1 -0
- package/dist/core/project-registry.js +56 -0
- package/dist/core/project-registry.js.map +1 -0
- 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/standup.d.ts +33 -0
- package/dist/core/standup.d.ts.map +1 -1
- package/dist/core/standup.js +137 -0
- package/dist/core/standup.js.map +1 -1
- 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/core/webhooks.d.ts +31 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +114 -0
- package/dist/core/webhooks.js.map +1 -0
- 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/dist/store-pg/index.d.ts +49 -0
- package/dist/store-pg/index.d.ts.map +1 -0
- package/dist/store-pg/index.js +422 -0
- package/dist/store-pg/index.js.map +1 -0
- package/package.json +8 -1
package/dist/core/types.d.ts
CHANGED
|
@@ -336,4 +336,44 @@ export interface SlopeEvent {
|
|
|
336
336
|
sprint_number?: number;
|
|
337
337
|
ticket_key?: string;
|
|
338
338
|
}
|
|
339
|
+
/** Types of implementation reviews that can be run on a sprint */
|
|
340
|
+
export type ReviewType = 'architect' | 'code' | 'ml-engineer' | 'security' | 'ux';
|
|
341
|
+
/** A finding from an implementation review */
|
|
342
|
+
export interface ReviewFinding {
|
|
343
|
+
review_type: ReviewType;
|
|
344
|
+
ticket_key: string;
|
|
345
|
+
severity: HazardSeverity;
|
|
346
|
+
description: string;
|
|
347
|
+
resolved: boolean;
|
|
348
|
+
}
|
|
349
|
+
/** A recommendation to run a specific review type */
|
|
350
|
+
export interface ReviewRecommendation {
|
|
351
|
+
review_type: ReviewType;
|
|
352
|
+
reason: string;
|
|
353
|
+
priority: 'required' | 'recommended' | 'optional';
|
|
354
|
+
}
|
|
355
|
+
/** Summary of a single tool call within a turn */
|
|
356
|
+
export interface ToolCallSummary {
|
|
357
|
+
tool: string;
|
|
358
|
+
params_summary: string;
|
|
359
|
+
success: boolean;
|
|
360
|
+
duration_ms?: number;
|
|
361
|
+
}
|
|
362
|
+
/** A single turn in a session transcript */
|
|
363
|
+
export interface TranscriptTurn {
|
|
364
|
+
/** Assigned on read from line index (1-indexed), NOT written to JSONL */
|
|
365
|
+
turn_number: number;
|
|
366
|
+
role: 'user' | 'assistant' | 'tool_result';
|
|
367
|
+
timestamp: string;
|
|
368
|
+
input_tokens?: number;
|
|
369
|
+
output_tokens?: number;
|
|
370
|
+
cache_read_tokens?: number;
|
|
371
|
+
tool_calls?: ToolCallSummary[];
|
|
372
|
+
outcome?: 'success' | 'failure' | 'retry' | 'abandoned';
|
|
373
|
+
outcome_note?: string;
|
|
374
|
+
context_used_pct?: number;
|
|
375
|
+
compacted?: boolean;
|
|
376
|
+
}
|
|
377
|
+
/** What's actually written per JSONL line (turn_number derived on read) */
|
|
378
|
+
export type TranscriptLine = Omit<TranscriptTurn, 'turn_number'>;
|
|
339
379
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { VisionDocument } from './analyzers/types.js';
|
|
2
|
+
export declare function loadVision(cwd?: string): VisionDocument | null;
|
|
3
|
+
export declare function saveVision(vision: VisionDocument, cwd?: string): void;
|
|
4
|
+
export declare function validateVision(vision: unknown): string[];
|
|
5
|
+
//# sourceMappingURL=vision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/core/vision.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAS9D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAQrE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAqCxD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// SLOPE — Vision Document: project intent and direction
|
|
2
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
|
+
const DEFAULT_VISION_PATH = '.slope/vision.json';
|
|
5
|
+
export function loadVision(cwd) {
|
|
6
|
+
const root = cwd ?? process.cwd();
|
|
7
|
+
const filePath = join(root, DEFAULT_VISION_PATH);
|
|
8
|
+
if (!existsSync(filePath))
|
|
9
|
+
return null;
|
|
10
|
+
try {
|
|
11
|
+
return JSON.parse(readFileSync(filePath, 'utf8'));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function saveVision(vision, cwd) {
|
|
18
|
+
const root = cwd ?? process.cwd();
|
|
19
|
+
const filePath = join(root, DEFAULT_VISION_PATH);
|
|
20
|
+
const dir = dirname(filePath);
|
|
21
|
+
if (!existsSync(dir)) {
|
|
22
|
+
mkdirSync(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
writeFileSync(filePath, JSON.stringify(vision, null, 2) + '\n');
|
|
25
|
+
}
|
|
26
|
+
export function validateVision(vision) {
|
|
27
|
+
const errors = [];
|
|
28
|
+
if (!vision || typeof vision !== 'object') {
|
|
29
|
+
errors.push('Vision must be an object');
|
|
30
|
+
return errors;
|
|
31
|
+
}
|
|
32
|
+
const v = vision;
|
|
33
|
+
if (!v.purpose || typeof v.purpose !== 'string' || v.purpose.trim() === '') {
|
|
34
|
+
errors.push('purpose is required and must be a non-empty string');
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(v.priorities)) {
|
|
37
|
+
errors.push('priorities must be an array');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
for (let i = 0; i < v.priorities.length; i++) {
|
|
41
|
+
if (typeof v.priorities[i] !== 'string') {
|
|
42
|
+
errors.push(`priorities[${i}] must be a string`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (v.createdAt !== undefined && typeof v.createdAt === 'string') {
|
|
47
|
+
if (isNaN(Date.parse(v.createdAt))) {
|
|
48
|
+
errors.push('createdAt must be a valid ISO date string');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (v.updatedAt !== undefined && typeof v.updatedAt === 'string') {
|
|
52
|
+
if (isNaN(Date.parse(v.updatedAt))) {
|
|
53
|
+
errors.push('updatedAt must be a valid ISO date string');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return errors;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=vision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/core/vision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SlopeEvent, CISignal } from './types.js';
|
|
2
|
+
export interface WebhookResult {
|
|
3
|
+
/** Ready for store.insertEvent() — null if event not relevant */
|
|
4
|
+
event: Omit<SlopeEvent, 'id' | 'timestamp'> | null;
|
|
5
|
+
/** Parsed CI signal from test output — null if not found */
|
|
6
|
+
ciSignal: CISignal | null;
|
|
7
|
+
/** What happened in the webhook */
|
|
8
|
+
action: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Validate a GitHub webhook signature using HMAC-SHA256.
|
|
12
|
+
* Uses crypto.timingSafeEqual to prevent timing attacks.
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateGitHubWebhookSignature(payload: string, signatureHeader: string, secret: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Handle a GitHub check_run webhook payload.
|
|
17
|
+
* Extracts CI signals from check_run.output.text when available.
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleCheckRunWebhook(payload: unknown, opts?: {
|
|
20
|
+
sprintNumber?: number;
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
}): WebhookResult;
|
|
23
|
+
/**
|
|
24
|
+
* Handle a GitHub workflow_run webhook payload.
|
|
25
|
+
* Maps workflow conclusions to SLOPE event types.
|
|
26
|
+
*/
|
|
27
|
+
export declare function handleWorkflowRunWebhook(payload: unknown, opts?: {
|
|
28
|
+
sprintNumber?: number;
|
|
29
|
+
sessionId?: string;
|
|
30
|
+
}): WebhookResult;
|
|
31
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/core/webhooks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IACnD,4DAA4D;IAC5D,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAeT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,aAAa,CAqDf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,aAAa,CA0Cf"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// SLOPE — CI Webhook Integration
|
|
2
|
+
// Parse GitHub webhook payloads into SLOPE events and CI signals.
|
|
3
|
+
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
4
|
+
import { parseTestOutput } from './ci-signals.js';
|
|
5
|
+
/**
|
|
6
|
+
* Validate a GitHub webhook signature using HMAC-SHA256.
|
|
7
|
+
* Uses crypto.timingSafeEqual to prevent timing attacks.
|
|
8
|
+
*/
|
|
9
|
+
export function validateGitHubWebhookSignature(payload, signatureHeader, secret) {
|
|
10
|
+
const parts = signatureHeader.split('=');
|
|
11
|
+
if (parts.length !== 2 || parts[0] !== 'sha256')
|
|
12
|
+
return false;
|
|
13
|
+
const hash = parts[1];
|
|
14
|
+
if (!hash)
|
|
15
|
+
return false;
|
|
16
|
+
const computed = createHmac('sha256', secret).update(payload, 'utf8').digest('hex');
|
|
17
|
+
// Both sides must be the same length for timingSafeEqual
|
|
18
|
+
if (computed.length !== hash.length)
|
|
19
|
+
return false;
|
|
20
|
+
return timingSafeEqual(Buffer.from(computed, 'utf8'), Buffer.from(hash, 'utf8'));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Handle a GitHub check_run webhook payload.
|
|
24
|
+
* Extracts CI signals from check_run.output.text when available.
|
|
25
|
+
*/
|
|
26
|
+
export function handleCheckRunWebhook(payload, opts) {
|
|
27
|
+
const data = payload;
|
|
28
|
+
const action = data.action ?? 'unknown';
|
|
29
|
+
const checkRun = data.check_run;
|
|
30
|
+
if (!checkRun) {
|
|
31
|
+
return { event: null, ciSignal: null, action: `check_run.${action}` };
|
|
32
|
+
}
|
|
33
|
+
const name = checkRun.name ?? 'unknown';
|
|
34
|
+
const status = checkRun.status ?? 'unknown';
|
|
35
|
+
const conclusion = checkRun.conclusion ?? null;
|
|
36
|
+
// Only process completed check runs
|
|
37
|
+
if (action !== 'completed') {
|
|
38
|
+
return { event: null, ciSignal: null, action: `check_run.${action}` };
|
|
39
|
+
}
|
|
40
|
+
// Try to parse CI signals from output text
|
|
41
|
+
let ciSignal = null;
|
|
42
|
+
const output = checkRun.output;
|
|
43
|
+
const outputText = output?.text;
|
|
44
|
+
if (outputText) {
|
|
45
|
+
ciSignal = parseTestOutput(outputText);
|
|
46
|
+
// Only keep signal if it parsed something meaningful
|
|
47
|
+
if (ciSignal.test_total === 0 && ciSignal.suites_total === 0) {
|
|
48
|
+
ciSignal = null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const eventData = {
|
|
52
|
+
source: 'github_webhook',
|
|
53
|
+
webhook_event: 'check_run',
|
|
54
|
+
check_name: name,
|
|
55
|
+
status,
|
|
56
|
+
conclusion,
|
|
57
|
+
};
|
|
58
|
+
if (ciSignal) {
|
|
59
|
+
eventData.ci_signal = ciSignal;
|
|
60
|
+
}
|
|
61
|
+
const event = {
|
|
62
|
+
type: conclusion === 'failure' ? 'failure' : 'decision',
|
|
63
|
+
data: eventData,
|
|
64
|
+
session_id: opts?.sessionId,
|
|
65
|
+
sprint_number: opts?.sprintNumber,
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
event,
|
|
69
|
+
ciSignal,
|
|
70
|
+
action: `check_run.${action}.${conclusion ?? status}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Handle a GitHub workflow_run webhook payload.
|
|
75
|
+
* Maps workflow conclusions to SLOPE event types.
|
|
76
|
+
*/
|
|
77
|
+
export function handleWorkflowRunWebhook(payload, opts) {
|
|
78
|
+
const data = payload;
|
|
79
|
+
const action = data.action ?? 'unknown';
|
|
80
|
+
const workflowRun = data.workflow_run;
|
|
81
|
+
if (!workflowRun) {
|
|
82
|
+
return { event: null, ciSignal: null, action: `workflow_run.${action}` };
|
|
83
|
+
}
|
|
84
|
+
const name = workflowRun.name ?? 'unknown';
|
|
85
|
+
const status = workflowRun.status ?? 'unknown';
|
|
86
|
+
const conclusion = workflowRun.conclusion ?? null;
|
|
87
|
+
const branch = workflowRun.head_branch ?? undefined;
|
|
88
|
+
const runNumber = workflowRun.run_number ?? undefined;
|
|
89
|
+
// Only process completed workflow runs
|
|
90
|
+
if (action !== 'completed') {
|
|
91
|
+
return { event: null, ciSignal: null, action: `workflow_run.${action}` };
|
|
92
|
+
}
|
|
93
|
+
const eventData = {
|
|
94
|
+
source: 'github_webhook',
|
|
95
|
+
webhook_event: 'workflow_run',
|
|
96
|
+
workflow_name: name,
|
|
97
|
+
status,
|
|
98
|
+
conclusion,
|
|
99
|
+
branch,
|
|
100
|
+
run_number: runNumber,
|
|
101
|
+
};
|
|
102
|
+
const event = {
|
|
103
|
+
type: conclusion === 'failure' ? 'failure' : 'decision',
|
|
104
|
+
data: eventData,
|
|
105
|
+
session_id: opts?.sessionId,
|
|
106
|
+
sprint_number: opts?.sprintNumber,
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
event,
|
|
110
|
+
ciSignal: null, // workflow_run doesn't include test output directly
|
|
111
|
+
action: `workflow_run.${action}.${conclusion ?? status}`,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/core/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/registry.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export declare const SLOPE_REGISTRY: FunctionRegistryEntry[];
|
|
|
13
13
|
* Key TypeScript type definitions for agent reference.
|
|
14
14
|
* Agents call search({ module: 'types' }) to retrieve this.
|
|
15
15
|
*/
|
|
16
|
-
export declare const SLOPE_TYPES = "// \u2500\u2500\u2500 Core Scoring Enums \u2500\u2500\u2500\ntype ClubSelection = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ntype ShotResult = 'fairway' | 'green' | 'in_the_hole' | 'missed_long' | 'missed_short' | 'missed_left' | 'missed_right';\ntype HazardType = 'bunker' | 'water' | 'ob' | 'rough' | 'trees';\ntype ConditionType = 'wind' | 'rain' | 'frost_delay' | 'altitude' | 'pin_position';\ntype SpecialPlay = 'gimme' | 'mulligan' | 'provisional' | 'lay_up' | 'scramble';\ntype MissDirection = 'long' | 'short' | 'left' | 'right';\ntype ScoreLabel = 'eagle' | 'birdie' | 'par' | 'bogey' | 'double_bogey' | 'triple_plus';\ntype SprintType = 'feature' | 'feedback' | 'infra' | 'bugfix' | 'research' | 'flow' | 'test-coverage' | 'audit';\n\n// \u2500\u2500\u2500 Record Types \u2500\u2500\u2500\ninterface HazardHit { type: HazardType; description: string; gotcha_id?: string; }\ninterface ShotRecord { ticket_key: string; title: string; club: ClubSelection; result: ShotResult; hazards: HazardHit[]; provisional_declared?: boolean; notes?: string; }\ninterface ConditionRecord { type: ConditionType; description: string; impact: 'none' | 'minor' | 'major'; }\n\n// \u2500\u2500\u2500 Scoring Types \u2500\u2500\u2500\ninterface HoleStats { fairways_hit: number; fairways_total: number; greens_in_regulation: number; greens_total: number; putts: number; penalties: number; hazards_hit: number; hazard_penalties: number; miss_directions: Record<MissDirection, number>; }\ninterface HoleScore { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; score: number; score_label: ScoreLabel; shots: ShotRecord[]; conditions: ConditionRecord[]; special_plays: SpecialPlay[]; stats: HoleStats; }\n\n// \u2500\u2500\u2500 Full Scorecard \u2500\u2500\u2500\ninterface GolfScorecard extends HoleScore { type?: SprintType; player?: string; date: string; training?: TrainingSession[]; nutrition?: NutritionEntry[]; yardage_book_updates: string[]; bunker_locations: string[]; course_management_notes: string[]; nineteenth_hole?: NineteenthHole; }\n\n// \u2500\u2500\u2500 Handicap \u2500\u2500\u2500\ninterface RollingStats { handicap: number; fairway_pct: number; gir_pct: number; avg_putts: number; penalties_per_round: number; miss_pattern: Record<MissDirection, number>; mulligans: number; gimmes: number; }\ninterface HandicapCard { last_5: RollingStats; last_10: RollingStats; all_time: RollingStats; }\n\n// \u2500\u2500\u2500 Dispersion \u2500\u2500\u2500\ninterface DispersionReport { total_shots: number; total_misses: number; miss_rate_pct: number; by_direction: Record<MissDirection, { count: number; pct: number; interpretation: string }>; dominant_miss: MissDirection | null; systemic_issues: string[]; }\ninterface AreaReport { by_sprint_type: Record<string, { count: number; avg_score_vs_par: number; fairway_pct: number; gir_pct: number }>; by_club: Record<string, { count: number; in_the_hole_rate: number; miss_rate: number }>; par_performance: Record<number, { count: number; avg_score_vs_par: number; over_par_rate: number }>; }\n\n// \u2500\u2500\u2500 Config & Loader \u2500\u2500\u2500\ninterface SlopeConfig { scorecardDir: string; scorecardPattern: string; minSprint: number; commonIssuesPath: string; sessionsPath: string; registry: 'file' | 'api'; claimsPath: string; registryApiUrl?: string; currentSprint?: number; store?: string; store_path?: string; }\n\n// \u2500\u2500\u2500 Store \u2500\u2500\u2500\ninterface SlopeSession { session_id: string; role: 'primary' | 'secondary' | 'observer'; ide: string; worktree_path?: string; branch?: string; started_at: string; last_heartbeat_at: string; metadata?: Record<string, unknown>; agent_role?: string; swarm_id?: string; }\ninterface SprintClaim { id: string; sprint_number: number; player: string; target: string; scope: ClaimScope; claimed_at: string; notes?: string; session_id?: string; expires_at?: string; metadata?: Record<string, unknown>; }\n\n// \u2500\u2500\u2500 Standup \u2500\u2500\u2500\ninterface StandupReport { sessionId: string; agent_role?: string; ticketKey?: string; status: 'working' | 'blocked' | 'complete'; progress: string; blockers: string[]; decisions: string[]; handoffs: HandoffEntry[]; timestamp: string; }\ninterface HandoffEntry { target: string; description: string; for_role?: string; }\n\n// \u2500\u2500\u2500 Roles \u2500\u2500\u2500\ninterface RoleDefinition { id: string; name: string; description: string; focusAreas: string[]; clubPreferences: Partial<Record<string, ClubSelection>>; briefingFilter: { emphasize: string[]; deemphasize: string[] }; }\n\n// \u2500\u2500\u2500 Builder Input \u2500\u2500\u2500\ninterface AgentBreakdown { session_id: string; agent_role: string; shots: ShotRecord[]; score: number; stats: HoleStats; }\ninterface AgentShotInput { session_id: string; agent_role: string; shots: ShotRecord[]; }\ninterface ScorecardInput { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; date: string; shots: ShotRecord[]; putts?: number; penalties?: number; type?: SprintType; conditions?: ConditionRecord[]; special_plays?: SpecialPlay[]; training?: TrainingSession[]; nutrition?: NutritionEntry[]; nineteenth_hole?: NineteenthHole; bunker_locations?: string[]; yardage_book_updates?: string[]; course_management_notes?: string[]; agents?: AgentBreakdown[]; }\n\n// \u2500\u2500\u2500 Escalation \u2500\u2500\u2500\ntype EscalationTrigger = 'blocker_timeout' | 'claim_conflict' | 'test_failure_cascade' | 'manual';\ntype EscalationSeverity = 'warning' | 'critical';\ntype EscalationAction = 'log_event' | 'mark_blocked' | 'notify_standup';\ninterface EscalationConfig { blocker_timeout?: number; claim_conflict?: boolean; test_failure_cascade?: number; actions?: EscalationAction[]; }\ninterface EscalationResult { trigger: EscalationTrigger; severity: EscalationSeverity; description: string; session_id?: string; agent_role?: string; actions: EscalationAction[]; }\n\n// \u2500\u2500\u2500 Team Handicap \u2500\u2500\u2500\ninterface RoleHandicap { role: string; sprints_participated: number; total_shots: number; stats: RollingStats; }\ninterface SwarmEfficiency { total_sprints: number; total_agents: number; avg_agents_per_sprint: number; total_shots: number; total_score: number; avg_score_vs_par: number; coordination_events: number; efficiency_ratio: number; }\ninterface RoleCombinationStats { roles: string[]; sprint_count: number; avg_score_vs_par: number; total_hazards: number; }\ninterface TeamHandicapCard { overall: RollingStats; by_role: RoleHandicap[]; swarm_efficiency: SwarmEfficiency; role_combinations: RoleCombinationStats[]; }\n\n// \u2500\u2500\u2500 PR Signals \u2500\u2500\u2500\ntype PRPlatform = 'github' | 'gitlab' | 'bitbucket' | 'unknown';\ntype PRReviewDecision = 'APPROVED' | 'CHANGES_REQUESTED' | 'REVIEW_REQUIRED' | 'COMMENTED' | 'NONE';\ninterface PRSignal { platform: PRPlatform; pr_number: number; review_cycles: number; change_request_count: number; time_to_merge_minutes: number | null; ci_checks_passed: number; ci_checks_failed: number; file_count: number; additions: number; deletions: number; comment_count: number; review_decision: PRReviewDecision; }\n\n// \u2500\u2500\u2500 Advisor \u2500\u2500\u2500\ninterface ExecutionTrace { planned_scope_paths: string[]; modified_files: string[]; test_results: { suite: string; passed: boolean; first_run: boolean }[]; reverts: number; elapsed_minutes: number; hazards_encountered: HazardHit[]; }\ninterface ShotClassification { result: ShotResult; miss_direction: MissDirection | null; confidence: number; reasoning: string; }\ninterface CombinedSignals { trace: ExecutionTrace; ci?: CISignal; pr?: PRSignal; events?: SlopeEvent[]; }\ninterface ClubRecommendation { club: ClubSelection; confidence: number; reasoning: string; provisional_suggestion?: string; }\ninterface TrainingRecommendation { area: string; type: TrainingType; description: string; priority: 'high' | 'medium' | 'low'; instruction_adjustment?: string; }\ninterface RecommendClubInput { ticketComplexity: 'trivial' | 'small' | 'medium' | 'large'; scorecards: GolfScorecard[]; slopeFactors?: string[]; }\ninterface TrainingPlanInput { handicap: HandicapCard; dispersion: DispersionReport; recentScorecards: GolfScorecard[]; }\n\n// \u2500\u2500\u2500 Roadmap \u2500\u2500\u2500\ntype RoadmapClub = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ninterface RoadmapTicket { key: string; title: string; club: RoadmapClub; complexity: 'trivial' | 'small' | 'standard' | 'moderate'; depends_on?: string[]; }\ninterface RoadmapSprint { id: number; theme: string; par: 3 | 4 | 5; slope: number; type: string; tickets: RoadmapTicket[]; depends_on?: number[]; }\ninterface RoadmapPhase { name: string; sprints: number[]; }\ninterface RoadmapDefinition { name: string; description?: string; phases: RoadmapPhase[]; sprints: RoadmapSprint[]; }\ninterface RoadmapValidationResult { valid: boolean; errors: RoadmapValidationError[]; warnings: RoadmapValidationWarning[]; }\ninterface RoadmapValidationError { type: 'error'; sprint?: number; ticket?: string; message: string; }\ninterface RoadmapValidationWarning { type: 'warning'; sprint?: number; ticket?: string; message: string; }\ninterface CriticalPathResult { path: number[]; length: number; totalPar: number; }\ninterface ParallelGroup { sprints: number[]; reason: string; }\n\n// \u2500\u2500\u2500 Player (Multi-Developer) \u2500\u2500\u2500\ninterface PlayerHandicap { player: string; scorecardCount: number; handicapCard: HandicapCard; }\ninterface LeaderboardEntry { rank: number; player: string; handicap: number; scorecardCount: number; improvementTrend: number; fairwayPct: number; girPct: number; }\ninterface Leaderboard { entries: LeaderboardEntry[]; generatedAt: string; }\n\n// \u2500\u2500\u2500 Flows \u2500\u2500\u2500\ninterface FlowStep { name: string; description: string; file_paths: string[]; notes?: string; }\ninterface FlowDefinition { id: string; title: string; description: string; entry_point: string; steps: FlowStep[]; files: string[]; tags: string[]; last_verified_sha: string; last_verified_at: string; }\ninterface FlowsFile { version: '1'; last_generated: string; flows: FlowDefinition[]; }\n\n// \u2500\u2500\u2500 Briefing \u2500\u2500\u2500\ninterface RecurringPattern { id: number; title: string; category: string; sprints_hit: number[]; gotcha_refs: string[]; description: string; prevention: string; reported_by?: string[]; }\ninterface CommonIssuesFile { recurring_patterns: RecurringPattern[]; }\ninterface SessionEntry { id: number; date: string; sprint: string; summary: string; where_left_off: string; }\ninterface BriefingFilter { categories?: string[]; keywords?: string[]; }\n\n// \u2500\u2500\u2500 Tournament \u2500\u2500\u2500\ninterface TournamentReview { id: string; name: string; dateRange: { start: string; end: string }; sprints: TournamentSprintEntry[]; scoring: TournamentScoring; stats: TournamentStats; hazardIndex: TournamentHazard[]; clubPerformance: Record<string, { attempts: number; inTheHole: number; avgScore: number }>; takeaways: string[]; improvements: string[]; reflection?: string; }\ninterface TournamentSprintEntry { sprintNumber: number; theme: string; par: number; slope: number; score: number; scoreLabel: ScoreLabel; ticketCount: number; ticketsLanded: number; }\ninterface TournamentScoring { totalPar: number; totalScore: number; differential: number; avgScoreLabel: string; bestSprint: { sprintNumber: number; label: ScoreLabel }; worstSprint: { sprintNumber: number; label: ScoreLabel }; sprintCount: number; ticketCount: number; ticketsLanded: number; landingRate: number; }\n";
|
|
16
|
+
export declare const SLOPE_TYPES = "// \u2500\u2500\u2500 Core Scoring Enums \u2500\u2500\u2500\ntype ClubSelection = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ntype ShotResult = 'fairway' | 'green' | 'in_the_hole' | 'missed_long' | 'missed_short' | 'missed_left' | 'missed_right';\ntype HazardType = 'bunker' | 'water' | 'ob' | 'rough' | 'trees';\ntype ConditionType = 'wind' | 'rain' | 'frost_delay' | 'altitude' | 'pin_position';\ntype SpecialPlay = 'gimme' | 'mulligan' | 'provisional' | 'lay_up' | 'scramble';\ntype MissDirection = 'long' | 'short' | 'left' | 'right';\ntype ScoreLabel = 'eagle' | 'birdie' | 'par' | 'bogey' | 'double_bogey' | 'triple_plus';\ntype SprintType = 'feature' | 'feedback' | 'infra' | 'bugfix' | 'research' | 'flow' | 'test-coverage' | 'audit';\n\n// \u2500\u2500\u2500 Record Types \u2500\u2500\u2500\ninterface HazardHit { type: HazardType; description: string; gotcha_id?: string; }\ninterface ShotRecord { ticket_key: string; title: string; club: ClubSelection; result: ShotResult; hazards: HazardHit[]; provisional_declared?: boolean; notes?: string; }\ninterface ConditionRecord { type: ConditionType; description: string; impact: 'none' | 'minor' | 'major'; }\n\n// \u2500\u2500\u2500 Scoring Types \u2500\u2500\u2500\ninterface HoleStats { fairways_hit: number; fairways_total: number; greens_in_regulation: number; greens_total: number; putts: number; penalties: number; hazards_hit: number; hazard_penalties: number; miss_directions: Record<MissDirection, number>; }\ninterface HoleScore { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; score: number; score_label: ScoreLabel; shots: ShotRecord[]; conditions: ConditionRecord[]; special_plays: SpecialPlay[]; stats: HoleStats; }\n\n// \u2500\u2500\u2500 Full Scorecard \u2500\u2500\u2500\ninterface GolfScorecard extends HoleScore { type?: SprintType; player?: string; date: string; training?: TrainingSession[]; nutrition?: NutritionEntry[]; yardage_book_updates: string[]; bunker_locations: string[]; course_management_notes: string[]; nineteenth_hole?: NineteenthHole; }\n\n// \u2500\u2500\u2500 Handicap \u2500\u2500\u2500\ninterface RollingStats { handicap: number; fairway_pct: number; gir_pct: number; avg_putts: number; penalties_per_round: number; miss_pattern: Record<MissDirection, number>; mulligans: number; gimmes: number; }\ninterface HandicapCard { last_5: RollingStats; last_10: RollingStats; all_time: RollingStats; }\n\n// \u2500\u2500\u2500 Dispersion \u2500\u2500\u2500\ninterface DispersionReport { total_shots: number; total_misses: number; miss_rate_pct: number; by_direction: Record<MissDirection, { count: number; pct: number; interpretation: string }>; dominant_miss: MissDirection | null; systemic_issues: string[]; }\ninterface AreaReport { by_sprint_type: Record<string, { count: number; avg_score_vs_par: number; fairway_pct: number; gir_pct: number }>; by_club: Record<string, { count: number; in_the_hole_rate: number; miss_rate: number }>; par_performance: Record<number, { count: number; avg_score_vs_par: number; over_par_rate: number }>; }\n\n// \u2500\u2500\u2500 Config & Loader \u2500\u2500\u2500\ninterface SlopeConfig { scorecardDir: string; scorecardPattern: string; minSprint: number; commonIssuesPath: string; sessionsPath: string; registry: 'file' | 'api'; claimsPath: string; registryApiUrl?: string; currentSprint?: number; store?: string; store_path?: string; }\n\n// \u2500\u2500\u2500 Store \u2500\u2500\u2500\ninterface SlopeSession { session_id: string; role: 'primary' | 'secondary' | 'observer'; ide: string; worktree_path?: string; branch?: string; started_at: string; last_heartbeat_at: string; metadata?: Record<string, unknown>; agent_role?: string; swarm_id?: string; }\ninterface SprintClaim { id: string; sprint_number: number; player: string; target: string; scope: ClaimScope; claimed_at: string; notes?: string; session_id?: string; expires_at?: string; metadata?: Record<string, unknown>; }\n\n// \u2500\u2500\u2500 Standup \u2500\u2500\u2500\ninterface StandupReport { sessionId: string; agent_role?: string; ticketKey?: string; status: 'working' | 'blocked' | 'complete'; progress: string; blockers: string[]; decisions: string[]; handoffs: HandoffEntry[]; timestamp: string; }\ninterface HandoffEntry { target: string; description: string; for_role?: string; }\n\n// \u2500\u2500\u2500 Roles \u2500\u2500\u2500\ninterface RoleDefinition { id: string; name: string; description: string; focusAreas: string[]; clubPreferences: Partial<Record<string, ClubSelection>>; briefingFilter: { emphasize: string[]; deemphasize: string[] }; }\n\n// \u2500\u2500\u2500 Builder Input \u2500\u2500\u2500\ninterface AgentBreakdown { session_id: string; agent_role: string; shots: ShotRecord[]; score: number; stats: HoleStats; }\ninterface AgentShotInput { session_id: string; agent_role: string; shots: ShotRecord[]; }\ninterface ScorecardInput { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; date: string; shots: ShotRecord[]; putts?: number; penalties?: number; type?: SprintType; conditions?: ConditionRecord[]; special_plays?: SpecialPlay[]; training?: TrainingSession[]; nutrition?: NutritionEntry[]; nineteenth_hole?: NineteenthHole; bunker_locations?: string[]; yardage_book_updates?: string[]; course_management_notes?: string[]; agents?: AgentBreakdown[]; }\n\n// \u2500\u2500\u2500 Escalation \u2500\u2500\u2500\ntype EscalationTrigger = 'blocker_timeout' | 'claim_conflict' | 'test_failure_cascade' | 'manual';\ntype EscalationSeverity = 'warning' | 'critical';\ntype EscalationAction = 'log_event' | 'mark_blocked' | 'notify_standup';\ninterface EscalationConfig { blocker_timeout?: number; claim_conflict?: boolean; test_failure_cascade?: number; actions?: EscalationAction[]; }\ninterface EscalationResult { trigger: EscalationTrigger; severity: EscalationSeverity; description: string; session_id?: string; agent_role?: string; actions: EscalationAction[]; }\n\n// \u2500\u2500\u2500 Team Handicap \u2500\u2500\u2500\ninterface RoleHandicap { role: string; sprints_participated: number; total_shots: number; stats: RollingStats; }\ninterface SwarmEfficiency { total_sprints: number; total_agents: number; avg_agents_per_sprint: number; total_shots: number; total_score: number; avg_score_vs_par: number; coordination_events: number; efficiency_ratio: number; }\ninterface RoleCombinationStats { roles: string[]; sprint_count: number; avg_score_vs_par: number; total_hazards: number; }\ninterface TeamHandicapCard { overall: RollingStats; by_role: RoleHandicap[]; swarm_efficiency: SwarmEfficiency; role_combinations: RoleCombinationStats[]; }\n\n// \u2500\u2500\u2500 PR Signals \u2500\u2500\u2500\ntype PRPlatform = 'github' | 'gitlab' | 'bitbucket' | 'unknown';\ntype PRReviewDecision = 'APPROVED' | 'CHANGES_REQUESTED' | 'REVIEW_REQUIRED' | 'COMMENTED' | 'NONE';\ninterface PRSignal { platform: PRPlatform; pr_number: number; review_cycles: number; change_request_count: number; time_to_merge_minutes: number | null; ci_checks_passed: number; ci_checks_failed: number; file_count: number; additions: number; deletions: number; comment_count: number; review_decision: PRReviewDecision; }\n\n// \u2500\u2500\u2500 Advisor \u2500\u2500\u2500\ninterface ExecutionTrace { planned_scope_paths: string[]; modified_files: string[]; test_results: { suite: string; passed: boolean; first_run: boolean }[]; reverts: number; elapsed_minutes: number; hazards_encountered: HazardHit[]; }\ninterface ShotClassification { result: ShotResult; miss_direction: MissDirection | null; confidence: number; reasoning: string; }\ninterface CombinedSignals { trace: ExecutionTrace; ci?: CISignal; pr?: PRSignal; events?: SlopeEvent[]; }\ninterface ClubRecommendation { club: ClubSelection; confidence: number; reasoning: string; provisional_suggestion?: string; }\ninterface TrainingRecommendation { area: string; type: TrainingType; description: string; priority: 'high' | 'medium' | 'low'; instruction_adjustment?: string; }\ninterface RecommendClubInput { ticketComplexity: 'trivial' | 'small' | 'medium' | 'large'; scorecards: GolfScorecard[]; slopeFactors?: string[]; }\ninterface TrainingPlanInput { handicap: HandicapCard; dispersion: DispersionReport; recentScorecards: GolfScorecard[]; }\n\n// \u2500\u2500\u2500 Roadmap \u2500\u2500\u2500\ntype RoadmapClub = 'driver' | 'long_iron' | 'short_iron' | 'wedge' | 'putter';\ninterface RoadmapTicket { key: string; title: string; club: RoadmapClub; complexity: 'trivial' | 'small' | 'standard' | 'moderate'; depends_on?: string[]; }\ninterface RoadmapSprint { id: number; theme: string; par: 3 | 4 | 5; slope: number; type: string; tickets: RoadmapTicket[]; depends_on?: number[]; }\ninterface RoadmapPhase { name: string; sprints: number[]; }\ninterface RoadmapDefinition { name: string; description?: string; phases: RoadmapPhase[]; sprints: RoadmapSprint[]; }\ninterface RoadmapValidationResult { valid: boolean; errors: RoadmapValidationError[]; warnings: RoadmapValidationWarning[]; }\ninterface RoadmapValidationError { type: 'error'; sprint?: number; ticket?: string; message: string; }\ninterface RoadmapValidationWarning { type: 'warning'; sprint?: number; ticket?: string; message: string; }\ninterface CriticalPathResult { path: number[]; length: number; totalPar: number; }\ninterface ParallelGroup { sprints: number[]; reason: string; }\n\n// \u2500\u2500\u2500 Player (Multi-Developer) \u2500\u2500\u2500\ninterface PlayerHandicap { player: string; scorecardCount: number; handicapCard: HandicapCard; }\ninterface LeaderboardEntry { rank: number; player: string; handicap: number; scorecardCount: number; improvementTrend: number; fairwayPct: number; girPct: number; }\ninterface Leaderboard { entries: LeaderboardEntry[]; generatedAt: string; }\n\n// \u2500\u2500\u2500 Flows \u2500\u2500\u2500\ninterface FlowStep { name: string; description: string; file_paths: string[]; notes?: string; }\ninterface FlowDefinition { id: string; title: string; description: string; entry_point: string; steps: FlowStep[]; files: string[]; tags: string[]; last_verified_sha: string; last_verified_at: string; }\ninterface FlowsFile { version: '1'; last_generated: string; flows: FlowDefinition[]; }\n\n// \u2500\u2500\u2500 Briefing \u2500\u2500\u2500\ninterface RecurringPattern { id: number; title: string; category: string; sprints_hit: number[]; gotcha_refs: string[]; description: string; prevention: string; reported_by?: string[]; }\ninterface CommonIssuesFile { recurring_patterns: RecurringPattern[]; }\ninterface SessionEntry { id: number; date: string; sprint: string; summary: string; where_left_off: string; }\ninterface BriefingFilter { categories?: string[]; keywords?: string[]; }\n\n// \u2500\u2500\u2500 Tournament \u2500\u2500\u2500\ninterface TournamentReview { id: string; name: string; dateRange: { start: string; end: string }; sprints: TournamentSprintEntry[]; scoring: TournamentScoring; stats: TournamentStats; hazardIndex: TournamentHazard[]; clubPerformance: Record<string, { attempts: number; inTheHole: number; avgScore: number }>; takeaways: string[]; improvements: string[]; reflection?: string; }\ninterface TournamentSprintEntry { sprintNumber: number; theme: string; par: number; slope: number; score: number; scoreLabel: ScoreLabel; ticketCount: number; ticketsLanded: number; }\ninterface TournamentScoring { totalPar: number; totalScore: number; differential: number; avgScoreLabel: string; bestSprint: { sprintNumber: number; label: ScoreLabel }; worstSprint: { sprintNumber: number; label: ScoreLabel }; sprintCount: number; ticketCount: number; ticketsLanded: number; landingRate: number; }\n\n// \u2500\u2500\u2500 Analyzers \u2500\u2500\u2500\ntype AnalyzerName = 'stack' | 'structure' | 'git' | 'testing' | 'ci' | 'docs';\ninterface StackProfile { primaryLanguage: string; languages: Record<string, number>; frameworks: string[]; packageManager?: string; runtime?: string; buildTool?: string; }\ninterface StructureProfile { totalFiles: number; sourceFiles: number; testFiles: number; maxDepth: number; isMonorepo: boolean; modules: Array<{ name: string; path: string; fileCount: number }>; largeFiles: Array<{ path: string; lines: number }>; }\ninterface GitProfile { totalCommits: number; commitsLast90d: number; commitsPerWeek: number; contributors: Array<{ name: string; email: string; commits: number }>; activeBranches: string[]; lastRelease?: { tag: string; date: string }; inferredCadence: 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'sporadic'; }\ninterface TestProfile { framework?: string; testFileCount: number; hasTestScript: boolean; hasCoverage: boolean; testDirs: string[]; }\ninterface CIProfile { system?: 'github-actions' | 'circleci' | 'gitlab-ci' | 'jenkins' | 'travis'; configFiles: string[]; hasTestStage: boolean; hasBuildStage: boolean; hasDeployStage: boolean; }\ninterface DocsProfile { hasReadme: boolean; readmeSummary?: string; hasContributing: boolean; hasChangelog: boolean; hasAdr: boolean; hasApiDocs: boolean; }\ninterface RepoProfile { analyzedAt: string; analyzersRun: AnalyzerName[]; stack: StackProfile; structure: StructureProfile; git: GitProfile; testing: TestProfile; ci: CIProfile; docs: DocsProfile; }\n\n// \u2500\u2500\u2500 Complexity \u2500\u2500\u2500\ninterface ComplexityProfile { estimatedPar: 3 | 4 | 5; estimatedSlope: number; slopeFactors: string[]; riskAreas: Array<{ module: string; reason: string }>; busFactor: Array<{ module: string; topContributor: string; pct: number }>; }\n\n// \u2500\u2500\u2500 Backlog \u2500\u2500\u2500\ninterface TodoEntry { type: 'TODO' | 'FIXME' | 'HACK' | 'XXX'; text: string; file: string; line: number; }\ninterface BacklogAnalysis { todos: TodoEntry[]; todosByModule: Record<string, TodoEntry[]>; changelogUnreleased?: string[]; }\n\n// \u2500\u2500\u2500 GitHub Backlog \u2500\u2500\u2500\ninterface GitHubIssue { number: number; title: string; state: 'open' | 'closed'; labels: string[]; milestone?: { number: number; title: string }; body?: string; createdAt: string; }\ninterface GitHubMilestone { number: number; title: string; description?: string; state: 'open' | 'closed'; openIssues: number; closedIssues: number; dueOn?: string; }\ninterface GitHubBacklogAnalysis { issues: GitHubIssue[]; issuesByLabel: Record<string, GitHubIssue[]>; issuesByMilestone: Record<string, GitHubIssue[]>; highPriority: GitHubIssue[]; milestones: GitHubMilestone[]; }\ninterface MergedBacklog { local: BacklogAnalysis; remote?: GitHubBacklogAnalysis; totalItems: number; }\n\n// \u2500\u2500\u2500 Generators \u2500\u2500\u2500\ninterface GeneratedConfig { projectName: string; metaphor: string; techStack: string[]; sprintCadence: 'weekly' | 'biweekly' | 'monthly'; team: Record<string, string>; }\ninterface GeneratedSprint { roadmap: RoadmapDefinition; sprint: RoadmapSprint; }\n\n// \u2500\u2500\u2500 Vision \u2500\u2500\u2500\ninterface VisionDocument { purpose: string; audience?: string; priorities: string[]; techDirection?: string; nonGoals?: string[]; createdAt: string; updatedAt: string; }\n";
|
|
17
17
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/mcp/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,cAAc,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/mcp/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,cAAc,EAAE,qBAAqB,EAovBjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,ktdA2IvB,CAAC"}
|
package/dist/mcp/registry.js
CHANGED
|
@@ -590,6 +590,146 @@ export const SLOPE_REGISTRY = [
|
|
|
590
590
|
signature: 'check_conflicts(sprintNumber?: number): { claims: number; conflicts: SprintConflict[] }',
|
|
591
591
|
example: '// Called via MCP tool, not directly',
|
|
592
592
|
},
|
|
593
|
+
// ─── Transcript ───
|
|
594
|
+
{
|
|
595
|
+
name: 'readTranscript',
|
|
596
|
+
module: 'core',
|
|
597
|
+
description: 'Read all turns from a session transcript JSONL file. Assigns turn_number from line index (1-indexed).',
|
|
598
|
+
signature: 'readTranscript(transcriptsDir: string, sessionId: string): TranscriptTurn[]',
|
|
599
|
+
example: 'return readTranscript(".slope/transcripts", "sess-abc-123");',
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
name: 'listTranscripts',
|
|
603
|
+
module: 'core',
|
|
604
|
+
description: 'List session IDs that have transcripts, sorted by modification time (newest first).',
|
|
605
|
+
signature: 'listTranscripts(transcriptsDir: string): string[]',
|
|
606
|
+
example: 'return listTranscripts(".slope/transcripts");',
|
|
607
|
+
},
|
|
608
|
+
// ─── Review (Implementation Review Integration) ───
|
|
609
|
+
{
|
|
610
|
+
name: 'recommendReviews',
|
|
611
|
+
module: 'core',
|
|
612
|
+
description: 'Recommend which review types to run based on sprint characteristics (ticket count, slope, file patterns).',
|
|
613
|
+
signature: 'recommendReviews(input: RecommendReviewsInput): ReviewRecommendation[]',
|
|
614
|
+
example: 'return recommendReviews({ ticketCount: 4, slope: 2, filePatterns: ["src/core/review.ts"] });',
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
name: 'findingToHazard',
|
|
618
|
+
module: 'core',
|
|
619
|
+
description: 'Convert a ReviewFinding into a HazardHit using the review type → hazard type mapping.',
|
|
620
|
+
signature: 'findingToHazard(finding: ReviewFinding): HazardHit',
|
|
621
|
+
example: 'return findingToHazard({ review_type: "architect", ticket_key: "S33-1", severity: "moderate", description: "issue", resolved: true });',
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
name: 'amendScorecardWithFindings',
|
|
625
|
+
module: 'core',
|
|
626
|
+
description: 'Amend a scorecard by injecting review findings as hazards and recomputing score. Idempotent.',
|
|
627
|
+
signature: 'amendScorecardWithFindings(scorecard: GolfScorecard, findings: ReviewFinding[]): AmendResult',
|
|
628
|
+
example: 'const scorecard = loadScorecards()[0]; return amendScorecardWithFindings(scorecard, findings);',
|
|
629
|
+
},
|
|
630
|
+
// ─── Analyzers ───
|
|
631
|
+
{
|
|
632
|
+
name: 'runAnalyzers',
|
|
633
|
+
module: 'core',
|
|
634
|
+
description: 'Runs repo profile analyzers (stack, structure, git, testing) and returns a RepoProfile.',
|
|
635
|
+
signature: 'runAnalyzers(opts?: { cwd?: string; analyzers?: AnalyzerName[] }): Promise<RepoProfile>',
|
|
636
|
+
example: 'return await runAnalyzers({ analyzers: ["stack", "git"] });',
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
name: 'loadRepoProfile',
|
|
640
|
+
module: 'core',
|
|
641
|
+
description: 'Loads cached RepoProfile from .slope/repo-profile.json.',
|
|
642
|
+
signature: 'loadRepoProfile(cwd?: string): RepoProfile | null',
|
|
643
|
+
example: 'return loadRepoProfile();',
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
name: 'saveRepoProfile',
|
|
647
|
+
module: 'core',
|
|
648
|
+
description: 'Saves a RepoProfile to .slope/repo-profile.json.',
|
|
649
|
+
signature: 'saveRepoProfile(profile: RepoProfile, cwd?: string): void',
|
|
650
|
+
example: 'const p = await runAnalyzers(); saveRepoProfile(p); return "saved";',
|
|
651
|
+
},
|
|
652
|
+
// ─── Complexity ───
|
|
653
|
+
{
|
|
654
|
+
name: 'estimateComplexity',
|
|
655
|
+
module: 'core',
|
|
656
|
+
description: 'Estimates par, slope, risk areas, and bus factor from a RepoProfile.',
|
|
657
|
+
signature: 'estimateComplexity(profile: RepoProfile): ComplexityProfile',
|
|
658
|
+
example: 'const p = loadRepoProfile(); return p ? estimateComplexity(p) : "no profile";',
|
|
659
|
+
},
|
|
660
|
+
// ─── Backlog ───
|
|
661
|
+
{
|
|
662
|
+
name: 'analyzeBacklog',
|
|
663
|
+
module: 'core',
|
|
664
|
+
description: 'Scans source files for TODO/FIXME/HACK/XXX comments and parses CHANGELOG unreleased section.',
|
|
665
|
+
signature: 'analyzeBacklog(cwd: string): Promise<BacklogAnalysis>',
|
|
666
|
+
example: 'return await analyzeBacklog(".");',
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
name: 'analyzeGitHubBacklog',
|
|
670
|
+
module: 'core',
|
|
671
|
+
description: 'Fetches open GitHub issues and milestones, groups by label/milestone, detects high-priority items.',
|
|
672
|
+
signature: 'analyzeGitHubBacklog(owner: string, repo: string, client: GitHubClient): Promise<GitHubBacklogAnalysis>',
|
|
673
|
+
example: 'const c = createGitHubClient(); return await analyzeGitHubBacklog("owner", "repo", c);',
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
name: 'mergeBacklogs',
|
|
677
|
+
module: 'core',
|
|
678
|
+
description: 'Combines local TODO/FIXME backlog with optional remote GitHub issue data into a unified MergedBacklog.',
|
|
679
|
+
signature: 'mergeBacklogs(local: BacklogAnalysis, remote?: GitHubBacklogAnalysis): MergedBacklog',
|
|
680
|
+
example: 'const local = await analyzeBacklog("."); return mergeBacklogs(local);',
|
|
681
|
+
},
|
|
682
|
+
// ─── Generators ───
|
|
683
|
+
{
|
|
684
|
+
name: 'generateConfig',
|
|
685
|
+
module: 'core',
|
|
686
|
+
description: 'Generates a SLOPE config (project name, cadence, team, stack) from a RepoProfile.',
|
|
687
|
+
signature: 'generateConfig(profile: RepoProfile): GeneratedConfig',
|
|
688
|
+
example: 'const p = loadRepoProfile(); return p ? generateConfig(p) : "no profile";',
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
name: 'generateFirstSprint',
|
|
692
|
+
module: 'core',
|
|
693
|
+
description: 'Generates a starter roadmap and first sprint from repo analysis, complexity, and backlog data.',
|
|
694
|
+
signature: 'generateFirstSprint(profile: RepoProfile, complexity: ComplexityProfile, backlog?: BacklogAnalysis): GeneratedSprint',
|
|
695
|
+
example: 'const p = loadRepoProfile(); const c = estimateComplexity(p); return generateFirstSprint(p, c);',
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
name: 'generateCommonIssues',
|
|
699
|
+
module: 'core',
|
|
700
|
+
description: 'Seeds common-issues.json from HACK/FIXME clusters and structural warnings.',
|
|
701
|
+
signature: 'generateCommonIssues(profile: RepoProfile, backlog: BacklogAnalysis): CommonIssuesFile',
|
|
702
|
+
example: 'const p = loadRepoProfile(); const b = await analyzeBacklog("."); return generateCommonIssues(p, b);',
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
name: 'generateRoadmap',
|
|
706
|
+
module: 'core',
|
|
707
|
+
description: 'Generates a RoadmapDefinition from repo profile, complexity, and merged backlog. Falls back: milestones → labels → local TODOs.',
|
|
708
|
+
signature: 'generateRoadmap(profile: RepoProfile, complexity: ComplexityProfile, backlog: MergedBacklog): RoadmapDefinition',
|
|
709
|
+
example: 'const p = loadRepoProfile(); const c = estimateComplexity(p); const b = mergeBacklogs(await analyzeBacklog(".")); return generateRoadmap(p, c, b);',
|
|
710
|
+
},
|
|
711
|
+
// ─── Vision ───
|
|
712
|
+
{
|
|
713
|
+
name: 'loadVision',
|
|
714
|
+
module: 'core',
|
|
715
|
+
description: 'Loads the VisionDocument from .slope/vision.json.',
|
|
716
|
+
signature: 'loadVision(cwd?: string): VisionDocument | null',
|
|
717
|
+
example: 'return loadVision();',
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
name: 'saveVision',
|
|
721
|
+
module: 'core',
|
|
722
|
+
description: 'Saves a VisionDocument to .slope/vision.json.',
|
|
723
|
+
signature: 'saveVision(vision: VisionDocument, cwd?: string): void',
|
|
724
|
+
example: 'saveVision({ purpose: "Build X", priorities: ["speed"], createdAt: new Date().toISOString(), updatedAt: new Date().toISOString() }); return "saved";',
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
name: 'validateVision',
|
|
728
|
+
module: 'core',
|
|
729
|
+
description: 'Validates a VisionDocument, returning an array of error strings.',
|
|
730
|
+
signature: 'validateVision(vision: unknown): string[]',
|
|
731
|
+
example: 'return validateVision({ purpose: "", priorities: [] });',
|
|
732
|
+
},
|
|
593
733
|
];
|
|
594
734
|
/**
|
|
595
735
|
* Key TypeScript type definitions for agent reference.
|
|
@@ -704,5 +844,35 @@ interface BriefingFilter { categories?: string[]; keywords?: string[]; }
|
|
|
704
844
|
interface TournamentReview { id: string; name: string; dateRange: { start: string; end: string }; sprints: TournamentSprintEntry[]; scoring: TournamentScoring; stats: TournamentStats; hazardIndex: TournamentHazard[]; clubPerformance: Record<string, { attempts: number; inTheHole: number; avgScore: number }>; takeaways: string[]; improvements: string[]; reflection?: string; }
|
|
705
845
|
interface TournamentSprintEntry { sprintNumber: number; theme: string; par: number; slope: number; score: number; scoreLabel: ScoreLabel; ticketCount: number; ticketsLanded: number; }
|
|
706
846
|
interface TournamentScoring { totalPar: number; totalScore: number; differential: number; avgScoreLabel: string; bestSprint: { sprintNumber: number; label: ScoreLabel }; worstSprint: { sprintNumber: number; label: ScoreLabel }; sprintCount: number; ticketCount: number; ticketsLanded: number; landingRate: number; }
|
|
847
|
+
|
|
848
|
+
// ─── Analyzers ───
|
|
849
|
+
type AnalyzerName = 'stack' | 'structure' | 'git' | 'testing' | 'ci' | 'docs';
|
|
850
|
+
interface StackProfile { primaryLanguage: string; languages: Record<string, number>; frameworks: string[]; packageManager?: string; runtime?: string; buildTool?: string; }
|
|
851
|
+
interface StructureProfile { totalFiles: number; sourceFiles: number; testFiles: number; maxDepth: number; isMonorepo: boolean; modules: Array<{ name: string; path: string; fileCount: number }>; largeFiles: Array<{ path: string; lines: number }>; }
|
|
852
|
+
interface GitProfile { totalCommits: number; commitsLast90d: number; commitsPerWeek: number; contributors: Array<{ name: string; email: string; commits: number }>; activeBranches: string[]; lastRelease?: { tag: string; date: string }; inferredCadence: 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'sporadic'; }
|
|
853
|
+
interface TestProfile { framework?: string; testFileCount: number; hasTestScript: boolean; hasCoverage: boolean; testDirs: string[]; }
|
|
854
|
+
interface CIProfile { system?: 'github-actions' | 'circleci' | 'gitlab-ci' | 'jenkins' | 'travis'; configFiles: string[]; hasTestStage: boolean; hasBuildStage: boolean; hasDeployStage: boolean; }
|
|
855
|
+
interface DocsProfile { hasReadme: boolean; readmeSummary?: string; hasContributing: boolean; hasChangelog: boolean; hasAdr: boolean; hasApiDocs: boolean; }
|
|
856
|
+
interface RepoProfile { analyzedAt: string; analyzersRun: AnalyzerName[]; stack: StackProfile; structure: StructureProfile; git: GitProfile; testing: TestProfile; ci: CIProfile; docs: DocsProfile; }
|
|
857
|
+
|
|
858
|
+
// ─── Complexity ───
|
|
859
|
+
interface ComplexityProfile { estimatedPar: 3 | 4 | 5; estimatedSlope: number; slopeFactors: string[]; riskAreas: Array<{ module: string; reason: string }>; busFactor: Array<{ module: string; topContributor: string; pct: number }>; }
|
|
860
|
+
|
|
861
|
+
// ─── Backlog ───
|
|
862
|
+
interface TodoEntry { type: 'TODO' | 'FIXME' | 'HACK' | 'XXX'; text: string; file: string; line: number; }
|
|
863
|
+
interface BacklogAnalysis { todos: TodoEntry[]; todosByModule: Record<string, TodoEntry[]>; changelogUnreleased?: string[]; }
|
|
864
|
+
|
|
865
|
+
// ─── GitHub Backlog ───
|
|
866
|
+
interface GitHubIssue { number: number; title: string; state: 'open' | 'closed'; labels: string[]; milestone?: { number: number; title: string }; body?: string; createdAt: string; }
|
|
867
|
+
interface GitHubMilestone { number: number; title: string; description?: string; state: 'open' | 'closed'; openIssues: number; closedIssues: number; dueOn?: string; }
|
|
868
|
+
interface GitHubBacklogAnalysis { issues: GitHubIssue[]; issuesByLabel: Record<string, GitHubIssue[]>; issuesByMilestone: Record<string, GitHubIssue[]>; highPriority: GitHubIssue[]; milestones: GitHubMilestone[]; }
|
|
869
|
+
interface MergedBacklog { local: BacklogAnalysis; remote?: GitHubBacklogAnalysis; totalItems: number; }
|
|
870
|
+
|
|
871
|
+
// ─── Generators ───
|
|
872
|
+
interface GeneratedConfig { projectName: string; metaphor: string; techStack: string[]; sprintCadence: 'weekly' | 'biweekly' | 'monthly'; team: Record<string, string>; }
|
|
873
|
+
interface GeneratedSprint { roadmap: RoadmapDefinition; sprint: RoadmapSprint; }
|
|
874
|
+
|
|
875
|
+
// ─── Vision ───
|
|
876
|
+
interface VisionDocument { purpose: string; audience?: string; priorities: string[]; techDirection?: string; nonGoals?: string[]; createdAt: string; updatedAt: string; }
|
|
707
877
|
`;
|
|
708
878
|
//# sourceMappingURL=registry.js.map
|