@slope-dev/slope 1.15.0 → 1.16.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/docs.d.ts +5 -0
- package/dist/cli/commands/docs.d.ts.map +1 -0
- package/dist/cli/commands/docs.js +303 -0
- package/dist/cli/commands/docs.js.map +1 -0
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +2 -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 +56 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/loop.d.ts +2 -0
- package/dist/cli/commands/loop.d.ts.map +1 -0
- package/dist/cli/commands/loop.js +388 -0
- package/dist/cli/commands/loop.js.map +1 -0
- package/dist/cli/commands/roadmap.d.ts.map +1 -1
- package/dist/cli/commands/roadmap.js +51 -2
- package/dist/cli/commands/roadmap.js.map +1 -1
- package/dist/cli/commands/session.d.ts.map +1 -1
- package/dist/cli/commands/session.js +2 -0
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/vision.d.ts.map +1 -1
- package/dist/cli/commands/vision.js +104 -7
- package/dist/cli/commands/vision.js.map +1 -1
- package/dist/cli/guards/stop-check.d.ts +5 -0
- package/dist/cli/guards/stop-check.d.ts.map +1 -1
- package/dist/cli/guards/stop-check.js +72 -5
- package/dist/cli/guards/stop-check.js.map +1 -1
- package/dist/cli/guards/worktree-check.d.ts +14 -0
- package/dist/cli/guards/worktree-check.d.ts.map +1 -0
- package/dist/cli/guards/worktree-check.js +137 -0
- package/dist/cli/guards/worktree-check.js.map +1 -0
- package/dist/cli/index.js +16 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loop/analyze.d.ts +8 -0
- package/dist/cli/loop/analyze.d.ts.map +1 -0
- package/dist/cli/loop/analyze.js +62 -0
- package/dist/cli/loop/analyze.js.map +1 -0
- package/dist/cli/loop/backlog.d.ts +26 -0
- package/dist/cli/loop/backlog.d.ts.map +1 -0
- package/dist/cli/loop/backlog.js +95 -0
- package/dist/cli/loop/backlog.js.map +1 -0
- package/dist/cli/loop/config.d.ts +10 -0
- package/dist/cli/loop/config.d.ts.map +1 -0
- package/dist/cli/loop/config.js +75 -0
- package/dist/cli/loop/config.js.map +1 -0
- package/dist/cli/loop/continuous.d.ts +6 -0
- package/dist/cli/loop/continuous.d.ts.map +1 -0
- package/dist/cli/loop/continuous.js +108 -0
- package/dist/cli/loop/continuous.js.map +1 -0
- package/dist/cli/loop/executor.d.ts +8 -0
- package/dist/cli/loop/executor.d.ts.map +1 -0
- package/dist/cli/loop/executor.js +600 -0
- package/dist/cli/loop/executor.js.map +1 -0
- package/dist/cli/loop/guard-runner.d.ts +14 -0
- package/dist/cli/loop/guard-runner.d.ts.map +1 -0
- package/dist/cli/loop/guard-runner.js +53 -0
- package/dist/cli/loop/guard-runner.js.map +1 -0
- package/dist/cli/loop/logger.d.ts +9 -0
- package/dist/cli/loop/logger.d.ts.map +1 -0
- package/dist/cli/loop/logger.js +37 -0
- package/dist/cli/loop/logger.js.map +1 -0
- package/dist/cli/loop/model-selector.d.ts +14 -0
- package/dist/cli/loop/model-selector.d.ts.map +1 -0
- package/dist/cli/loop/model-selector.js +59 -0
- package/dist/cli/loop/model-selector.js.map +1 -0
- package/dist/cli/loop/parallel.d.ts +6 -0
- package/dist/cli/loop/parallel.d.ts.map +1 -0
- package/dist/cli/loop/parallel.js +109 -0
- package/dist/cli/loop/parallel.js.map +1 -0
- package/dist/cli/loop/pr-lifecycle.d.ts +26 -0
- package/dist/cli/loop/pr-lifecycle.d.ts.map +1 -0
- package/dist/cli/loop/pr-lifecycle.js +244 -0
- package/dist/cli/loop/pr-lifecycle.js.map +1 -0
- package/dist/cli/loop/types.d.ts +98 -0
- package/dist/cli/loop/types.d.ts.map +1 -0
- package/dist/cli/loop/types.js +37 -0
- package/dist/cli/loop/types.js.map +1 -0
- package/dist/cli/loop/worktree.d.ts +30 -0
- package/dist/cli/loop/worktree.d.ts.map +1 -0
- package/dist/cli/loop/worktree.js +134 -0
- package/dist/cli/loop/worktree.js.map +1 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/registry.js +3 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/core/analyzers/stack.d.ts +2 -0
- package/dist/core/analyzers/stack.d.ts.map +1 -1
- package/dist/core/analyzers/stack.js +9 -6
- package/dist/core/analyzers/stack.js.map +1 -1
- package/dist/core/constants.d.ts +2 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +2 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/docs.d.ts +50 -0
- package/dist/core/docs.d.ts.map +1 -0
- package/dist/core/docs.js +67 -0
- package/dist/core/docs.js.map +1 -0
- package/dist/core/generators/roadmap.d.ts +6 -1
- package/dist/core/generators/roadmap.d.ts.map +1 -1
- package/dist/core/generators/roadmap.js +150 -0
- package/dist/core/generators/roadmap.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 +8 -0
- package/dist/core/guard.js.map +1 -1
- package/dist/core/index.d.ts +5 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/vision.d.ts +10 -0
- package/dist/core/vision.d.ts.map +1 -1
- package/dist/core/vision.js +37 -0
- package/dist/core/vision.js.map +1 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +29 -0
- package/dist/mcp/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export interface LoopConfig {
|
|
2
|
+
modelLocal: string;
|
|
3
|
+
modelApi: string;
|
|
4
|
+
ollamaApiBase: string;
|
|
5
|
+
ollamaFlashAttention: boolean;
|
|
6
|
+
ollamaKvCacheType: string;
|
|
7
|
+
modelApiTimeout: number;
|
|
8
|
+
modelLocalTimeout: number;
|
|
9
|
+
escalateOnFail: boolean;
|
|
10
|
+
agentGuideMaxWords: number;
|
|
11
|
+
modelRegenThreshold: number;
|
|
12
|
+
loopTestCmd: string;
|
|
13
|
+
backlogPath: string;
|
|
14
|
+
resultsDir: string;
|
|
15
|
+
logDir: string;
|
|
16
|
+
agentGuide: string;
|
|
17
|
+
sprintHistory: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_LOOP_CONFIG: LoopConfig;
|
|
20
|
+
export declare const ENV_VAR_MAP: Record<string, keyof LoopConfig>;
|
|
21
|
+
/** Source of a config value (for --show display) */
|
|
22
|
+
export type ConfigSource = 'env' | 'file' | 'default';
|
|
23
|
+
export interface ConfigWithSources {
|
|
24
|
+
config: LoopConfig;
|
|
25
|
+
sources: Record<keyof LoopConfig, ConfigSource>;
|
|
26
|
+
}
|
|
27
|
+
export interface BacklogFile {
|
|
28
|
+
generated_at: string;
|
|
29
|
+
_enrichMeta?: {
|
|
30
|
+
version: number;
|
|
31
|
+
};
|
|
32
|
+
sprints: BacklogSprint[];
|
|
33
|
+
}
|
|
34
|
+
export interface BacklogSprint {
|
|
35
|
+
id: string;
|
|
36
|
+
title: string;
|
|
37
|
+
strategy: 'hardening' | 'testing' | 'cleanup' | 'documentation' | 'hardening-overflow';
|
|
38
|
+
par: number;
|
|
39
|
+
slope: number;
|
|
40
|
+
type: 'feature' | 'bugfix' | 'chore';
|
|
41
|
+
tickets: BacklogTicket[];
|
|
42
|
+
}
|
|
43
|
+
export interface BacklogTicket {
|
|
44
|
+
key: string;
|
|
45
|
+
title: string;
|
|
46
|
+
club: Club;
|
|
47
|
+
description: string;
|
|
48
|
+
acceptance_criteria: string[];
|
|
49
|
+
modules: string[];
|
|
50
|
+
max_files: number;
|
|
51
|
+
estimated_tokens?: number;
|
|
52
|
+
files?: {
|
|
53
|
+
primary: string[];
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export type Club = 'putter' | 'wedge' | 'short_iron' | 'long_iron' | 'driver';
|
|
57
|
+
export interface TicketResult {
|
|
58
|
+
ticket: string;
|
|
59
|
+
title: string;
|
|
60
|
+
club: string;
|
|
61
|
+
max_files: number;
|
|
62
|
+
primary_model: string;
|
|
63
|
+
final_model: string;
|
|
64
|
+
escalated: boolean;
|
|
65
|
+
tests_passing: boolean;
|
|
66
|
+
noop: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface SprintResult {
|
|
69
|
+
sprint_id: string;
|
|
70
|
+
title: string;
|
|
71
|
+
strategy: string;
|
|
72
|
+
completed_at: string;
|
|
73
|
+
branch: string;
|
|
74
|
+
tickets_total: number;
|
|
75
|
+
tickets_passing: number;
|
|
76
|
+
tickets_noop: number;
|
|
77
|
+
tickets: TicketResult[];
|
|
78
|
+
pr_number?: number;
|
|
79
|
+
merge_status?: 'merged' | 'blocked' | 'skipped';
|
|
80
|
+
merge_block_reason?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface ModelConfig {
|
|
83
|
+
generated_at: string;
|
|
84
|
+
ticket_count: number;
|
|
85
|
+
escalation_save_rate: number;
|
|
86
|
+
success_rates: Record<string, {
|
|
87
|
+
total: number;
|
|
88
|
+
passing: number;
|
|
89
|
+
rate: number;
|
|
90
|
+
}>;
|
|
91
|
+
cost_per_success: Record<string, number>;
|
|
92
|
+
recommendations: Record<string, {
|
|
93
|
+
model: 'api' | 'local';
|
|
94
|
+
reason: string;
|
|
95
|
+
}>;
|
|
96
|
+
notes: string[];
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/loop/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Loop orchestration types — derived from actual backlog.json, model-config.json, and result schemas
|
|
2
|
+
export const DEFAULT_LOOP_CONFIG = {
|
|
3
|
+
modelLocal: 'ollama/qwen3-coder-next-fast',
|
|
4
|
+
modelApi: 'openrouter/anthropic/claude-haiku-4-5',
|
|
5
|
+
ollamaApiBase: 'http://localhost:11434',
|
|
6
|
+
ollamaFlashAttention: true,
|
|
7
|
+
ollamaKvCacheType: 'q8_0',
|
|
8
|
+
modelApiTimeout: 1800,
|
|
9
|
+
modelLocalTimeout: 1800,
|
|
10
|
+
escalateOnFail: true,
|
|
11
|
+
agentGuideMaxWords: 5000,
|
|
12
|
+
modelRegenThreshold: 10,
|
|
13
|
+
loopTestCmd: "pnpm vitest run --exclude '**/guards.test.ts'",
|
|
14
|
+
backlogPath: 'slope-loop/backlog.json',
|
|
15
|
+
resultsDir: 'slope-loop/results',
|
|
16
|
+
logDir: 'slope-loop/logs',
|
|
17
|
+
agentGuide: 'slope-loop/slope-loop-guide/SKILL.md',
|
|
18
|
+
sprintHistory: 'slope-loop/slope-loop-guide/references/sprint-history.md',
|
|
19
|
+
};
|
|
20
|
+
// Mapping from LoopConfig keys to environment variable names
|
|
21
|
+
export const ENV_VAR_MAP = {
|
|
22
|
+
MODEL_LOCAL: 'modelLocal',
|
|
23
|
+
MODEL_API: 'modelApi',
|
|
24
|
+
OLLAMA_API_BASE: 'ollamaApiBase',
|
|
25
|
+
OLLAMA_FLASH_ATTENTION: 'ollamaFlashAttention',
|
|
26
|
+
OLLAMA_KV_CACHE_TYPE: 'ollamaKvCacheType',
|
|
27
|
+
MODEL_API_TIMEOUT: 'modelApiTimeout',
|
|
28
|
+
MODEL_LOCAL_TIMEOUT: 'modelLocalTimeout',
|
|
29
|
+
ESCALATE_ON_FAIL: 'escalateOnFail',
|
|
30
|
+
AGENT_GUIDE_MAX_WORDS: 'agentGuideMaxWords',
|
|
31
|
+
MODEL_REGEN_THRESHOLD: 'modelRegenThreshold',
|
|
32
|
+
LOOP_TEST_CMD: 'loopTestCmd',
|
|
33
|
+
LOOP_BACKLOG_PATH: 'backlogPath',
|
|
34
|
+
LOOP_RESULTS_DIR: 'resultsDir',
|
|
35
|
+
LOOP_LOG_DIR: 'logDir',
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/loop/types.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAuBrG,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,UAAU,EAAE,8BAA8B;IAC1C,QAAQ,EAAE,uCAAuC;IACjD,aAAa,EAAE,wBAAwB;IACvC,oBAAoB,EAAE,IAAI;IAC1B,iBAAiB,EAAE,MAAM;IACzB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,EAAE;IACvB,WAAW,EAAE,+CAA+C;IAC5D,WAAW,EAAE,yBAAyB;IACtC,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,sCAAsC;IAClD,aAAa,EAAE,0DAA0D;CAC1E,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,WAAW,GAAqC;IAC3D,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,UAAU;IACrB,eAAe,EAAE,eAAe;IAChC,sBAAsB,EAAE,sBAAsB;IAC9C,oBAAoB,EAAE,mBAAmB;IACzC,iBAAiB,EAAE,iBAAiB;IACpC,mBAAmB,EAAE,mBAAmB;IACxC,gBAAgB,EAAE,gBAAgB;IAClC,qBAAqB,EAAE,oBAAoB;IAC3C,qBAAqB,EAAE,qBAAqB;IAC5C,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,aAAa;IAChC,gBAAgB,EAAE,YAAY;IAC9B,YAAY,EAAE,QAAQ;CACvB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Logger } from './logger.js';
|
|
2
|
+
export interface WorktreeInfo {
|
|
3
|
+
path: string;
|
|
4
|
+
branch: string;
|
|
5
|
+
created: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Create (or reuse) a git worktree for a sprint.
|
|
9
|
+
* Runs pnpm install + build in the new worktree.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createWorktree(sprintId: string, mainRepo: string, log: Logger): WorktreeInfo;
|
|
12
|
+
/**
|
|
13
|
+
* Refresh the semantic index in a worktree if stale.
|
|
14
|
+
*/
|
|
15
|
+
export declare function refreshIndex(worktreePath: string, log: Logger): void;
|
|
16
|
+
/**
|
|
17
|
+
* Enrich backlog if not already enriched.
|
|
18
|
+
*/
|
|
19
|
+
export declare function enrichBacklog(backlogPath: string, worktreePath: string, log: Logger): void;
|
|
20
|
+
/**
|
|
21
|
+
* Remove a worktree and optionally its branch.
|
|
22
|
+
*/
|
|
23
|
+
export declare function removeWorktree(worktreePath: string, branch: string, mainRepo: string, log: Logger): void;
|
|
24
|
+
/** Get the current HEAD SHA */
|
|
25
|
+
export declare function getHeadSha(cwd: string): string;
|
|
26
|
+
/** Count commits between two SHAs */
|
|
27
|
+
export declare function countCommits(fromSha: string, toSha: string, cwd: string): number;
|
|
28
|
+
/** Push branch to origin */
|
|
29
|
+
export declare function pushBranch(branch: string, cwd: string, log: Logger): boolean;
|
|
30
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/cli/loop/worktree.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,YAAY,CAyCd;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoBpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAW1F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,IAAI,CAeN;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,qCAAqC;AACrC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhF;AAED,4BAA4B;AAC5B,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ5E"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { execSync, execFileSync } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const BRANCH_PREFIX = 'slope-loop';
|
|
5
|
+
/**
|
|
6
|
+
* Create (or reuse) a git worktree for a sprint.
|
|
7
|
+
* Runs pnpm install + build in the new worktree.
|
|
8
|
+
*/
|
|
9
|
+
export function createWorktree(sprintId, mainRepo, log) {
|
|
10
|
+
const branch = `${BRANCH_PREFIX}/${sprintId}`;
|
|
11
|
+
const worktreePath = join(mainRepo, `.slope-loop-worktree-${sprintId}`);
|
|
12
|
+
// Prune stale worktree refs
|
|
13
|
+
try {
|
|
14
|
+
execFileSync('git', ['worktree', 'prune'], { cwd: mainRepo, stdio: 'pipe' });
|
|
15
|
+
}
|
|
16
|
+
catch { /* ok */ }
|
|
17
|
+
if (existsSync(worktreePath)) {
|
|
18
|
+
log.info(`Reusing existing worktree: ${worktreePath}`);
|
|
19
|
+
return { path: worktreePath, branch, created: false };
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
execFileSync('git', ['worktree', 'add', worktreePath, '-b', branch], {
|
|
23
|
+
cwd: mainRepo,
|
|
24
|
+
stdio: 'pipe',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw new Error(`Failed to create worktree: ${err.message}`);
|
|
29
|
+
}
|
|
30
|
+
log.info(`Created worktree: ${worktreePath} (branch: ${branch})`);
|
|
31
|
+
// Install deps and build in the new worktree
|
|
32
|
+
log.info('Installing dependencies in worktree...');
|
|
33
|
+
try {
|
|
34
|
+
execSync('pnpm install --frozen-lockfile', { cwd: worktreePath, stdio: 'pipe', timeout: 120_000 });
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
log.warn('pnpm install failed in worktree — continuing anyway');
|
|
38
|
+
}
|
|
39
|
+
log.info('Building in worktree...');
|
|
40
|
+
try {
|
|
41
|
+
execSync('pnpm build', { cwd: worktreePath, stdio: 'pipe', timeout: 120_000 });
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
log.warn('pnpm build failed in worktree — continuing anyway');
|
|
45
|
+
}
|
|
46
|
+
return { path: worktreePath, branch, created: true };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Refresh the semantic index in a worktree if stale.
|
|
50
|
+
*/
|
|
51
|
+
export function refreshIndex(worktreePath, log) {
|
|
52
|
+
try {
|
|
53
|
+
const currentSha = execFileSync('git', ['rev-parse', 'HEAD'], { cwd: worktreePath, encoding: 'utf8' }).trim();
|
|
54
|
+
let indexSha = '';
|
|
55
|
+
try {
|
|
56
|
+
const statusJson = execFileSync('pnpm', ['slope', 'index', '--status', '--json'], {
|
|
57
|
+
cwd: worktreePath,
|
|
58
|
+
encoding: 'utf8',
|
|
59
|
+
});
|
|
60
|
+
const parsed = JSON.parse(statusJson);
|
|
61
|
+
indexSha = parsed.lastSha ?? '';
|
|
62
|
+
}
|
|
63
|
+
catch { /* no index yet */ }
|
|
64
|
+
if (currentSha !== indexSha) {
|
|
65
|
+
log.info('Updating semantic index...');
|
|
66
|
+
execFileSync('pnpm', ['slope', 'index'], { cwd: worktreePath, stdio: 'pipe', timeout: 120_000 });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
log.warn('Semantic index refresh failed — using stale index');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Enrich backlog if not already enriched.
|
|
75
|
+
*/
|
|
76
|
+
export function enrichBacklog(backlogPath, worktreePath, log) {
|
|
77
|
+
log.info('Enriching backlog with file context...');
|
|
78
|
+
try {
|
|
79
|
+
execFileSync('pnpm', ['slope', 'enrich', backlogPath], {
|
|
80
|
+
cwd: worktreePath,
|
|
81
|
+
stdio: 'pipe',
|
|
82
|
+
timeout: 120_000,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
log.warn('Backlog enrichment failed — continuing without enrichment');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Remove a worktree and optionally its branch.
|
|
91
|
+
*/
|
|
92
|
+
export function removeWorktree(worktreePath, branch, mainRepo, log) {
|
|
93
|
+
try {
|
|
94
|
+
execFileSync('git', ['worktree', 'remove', worktreePath, '--force'], { cwd: mainRepo, stdio: 'pipe' });
|
|
95
|
+
log.info(`Removed worktree: ${worktreePath}`);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
log.warn(`Failed to remove worktree: ${worktreePath}`);
|
|
99
|
+
}
|
|
100
|
+
// Safe branch delete (-d, not -D) — refuses if unmerged
|
|
101
|
+
try {
|
|
102
|
+
execFileSync('git', ['branch', '-d', branch], { cwd: mainRepo, stdio: 'pipe' });
|
|
103
|
+
log.info(`Deleted branch: ${branch}`);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
log.info(`Branch ${branch} has unmerged changes — keeping`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Get the current HEAD SHA */
|
|
110
|
+
export function getHeadSha(cwd) {
|
|
111
|
+
return execFileSync('git', ['rev-parse', 'HEAD'], { cwd, encoding: 'utf8' }).trim();
|
|
112
|
+
}
|
|
113
|
+
/** Count commits between two SHAs */
|
|
114
|
+
export function countCommits(fromSha, toSha, cwd) {
|
|
115
|
+
try {
|
|
116
|
+
const count = execFileSync('git', ['rev-list', '--count', `${fromSha}..${toSha}`], { cwd, encoding: 'utf8' }).trim();
|
|
117
|
+
return parseInt(count, 10) || 0;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Push branch to origin */
|
|
124
|
+
export function pushBranch(branch, cwd, log) {
|
|
125
|
+
try {
|
|
126
|
+
execFileSync('git', ['push', '-u', 'origin', branch], { cwd, stdio: 'pipe' });
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
log.warn(`git push failed for branch ${branch}`);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/cli/loop/worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,EAoDzD,CAAC"}
|
package/dist/cli/registry.js
CHANGED
|
@@ -39,10 +39,13 @@ export const CLI_COMMAND_REGISTRY = [
|
|
|
39
39
|
{ cmd: 'roadmap', desc: 'Strategic planning and roadmap tools', category: 'planning' },
|
|
40
40
|
{ cmd: 'vision', desc: 'Display project vision document', category: 'planning' },
|
|
41
41
|
{ cmd: 'initiative', desc: 'Multi-sprint initiative orchestration', category: 'planning' },
|
|
42
|
+
// ── Loop ─────────────────────────────────────────────
|
|
43
|
+
{ cmd: 'loop', desc: 'Autonomous sprint execution loop', category: 'tooling' },
|
|
42
44
|
// ── Indexing ──────────────────────────────────────────────────────
|
|
43
45
|
{ cmd: 'index-cmd', desc: 'Semantic embedding index management', category: 'tooling' },
|
|
44
46
|
{ cmd: 'context', desc: 'Semantic context search for agents', category: 'tooling' },
|
|
45
47
|
{ cmd: 'prep', desc: 'Generate execution plan for a ticket', category: 'tooling' },
|
|
46
48
|
{ cmd: 'enrich', desc: 'Batch-enrich backlog with file context', category: 'tooling' },
|
|
49
|
+
{ cmd: 'docs', desc: 'Generate documentation manifest and changelog', category: 'tooling' },
|
|
47
50
|
];
|
|
48
51
|
//# sourceMappingURL=registry.js.map
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { StackProfile } from './types.js';
|
|
2
|
+
/** Detect package manager from lock files in the given directory. */
|
|
3
|
+
export declare function detectPackageManager(cwd: string): string | null;
|
|
2
4
|
export declare function analyzeStack(cwd: string): Promise<StackProfile>;
|
|
3
5
|
//# sourceMappingURL=stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/stack.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmD/C,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../src/core/analyzers/stack.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmD/C,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwGrE"}
|
|
@@ -47,6 +47,14 @@ function readJson(path) {
|
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
/** Detect package manager from lock files in the given directory. */
|
|
51
|
+
export function detectPackageManager(cwd) {
|
|
52
|
+
for (const [lockFile, pm] of Object.entries(LOCK_TO_PM)) {
|
|
53
|
+
if (existsSync(join(cwd, lockFile)))
|
|
54
|
+
return pm;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
50
58
|
export async function analyzeStack(cwd) {
|
|
51
59
|
const languages = {};
|
|
52
60
|
const frameworks = [];
|
|
@@ -77,12 +85,7 @@ export async function analyzeStack(cwd) {
|
|
|
77
85
|
}
|
|
78
86
|
}
|
|
79
87
|
// Detect package manager from lock files
|
|
80
|
-
|
|
81
|
-
if (existsSync(join(cwd, lockFile))) {
|
|
82
|
-
packageManager = pm;
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
88
|
+
packageManager = detectPackageManager(cwd) ?? undefined;
|
|
86
89
|
// Parse package.json for frameworks and runtime
|
|
87
90
|
const pkgJson = readJson(join(cwd, 'package.json'));
|
|
88
91
|
if (pkgJson) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/core/analyzers/stack.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/core/analyzers/stack.ts"],"names":[],"mappings":"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"}
|
package/dist/core/constants.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export declare const HAZARD_SEVERITY_PENALTIES: Record<HazardSeverity, number>;
|
|
|
11
11
|
export declare const TRAINING_TYPE_MAP: Partial<Record<SprintType, TrainingType>>;
|
|
12
12
|
/** Maps review types to hazard types for finding → hazard conversion */
|
|
13
13
|
export declare const REVIEW_TYPE_HAZARD_MAP: Record<ReviewType, HazardType>;
|
|
14
|
+
/** Stale session cleanup threshold (2 hours in ms) */
|
|
15
|
+
export declare const STALE_SESSION_THRESHOLD_MS = 7200000;
|
|
14
16
|
/** Default nutrition items to assess per sprint */
|
|
15
17
|
export declare const NUTRITION_CHECKLIST: NutritionCategory[];
|
|
16
18
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElI,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAI3D,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,aAAa,iGAMhB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAMnD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKpE,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAIvE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAMjE,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAMlD,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElI,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAI3D,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,aAAa,iGAMhB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAMnD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKpE,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAIvE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAMjE,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,0BAA0B,UAAY,CAAC;AAEpD,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAMlD,CAAC"}
|
package/dist/core/constants.js
CHANGED
|
@@ -41,6 +41,8 @@ export const REVIEW_TYPE_HAZARD_MAP = {
|
|
|
41
41
|
security: 'water',
|
|
42
42
|
ux: 'trees',
|
|
43
43
|
};
|
|
44
|
+
/** Stale session cleanup threshold (2 hours in ms) */
|
|
45
|
+
export const STALE_SESSION_THRESHOLD_MS = 7_200_000;
|
|
44
46
|
/** Default nutrition items to assess per sprint */
|
|
45
47
|
export const NUTRITION_CHECKLIST = [
|
|
46
48
|
'hydration',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAEA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe;IACf,kBAAkB;IAClB,UAAU;IACV,cAAc;IACd,mBAAmB;CACX,CAAC;AAEX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAA+B;IACtD,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;IACb,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ;IACd,CAAC,CAAC,CAAC,EAAE,KAAK;IACV,CAAC,CAAC,CAAC,EAAE,OAAO;IACZ,CAAC,CAAC,CAAC,EAAE,cAAc;CACpB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAmC;IACvE,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAA8C;IAC1E,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,kBAAkB;CACpC,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,OAAO;IACtB,QAAQ,EAAE,OAAO;IACjB,EAAE,EAAE,OAAO;CACZ,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,WAAW;IACX,MAAM;IACN,UAAU;IACV,aAAa;IACb,YAAY;CACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAEA,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,eAAe;IACf,kBAAkB;IAClB,UAAU;IACV,cAAc;IACd,mBAAmB;CACX,CAAC;AAEX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAA+B;IACtD,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;IACb,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ;IACd,CAAC,CAAC,CAAC,EAAE,KAAK;IACV,CAAC,CAAC,CAAC,EAAE,OAAO;IACZ,CAAC,CAAC,CAAC,EAAE,cAAc;CACpB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAmC;IACvE,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAA8C;IAC1E,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,kBAAkB;CACpC,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,OAAO;IACtB,QAAQ,EAAE,OAAO;IACjB,EAAE,EAAE,OAAO;CACZ,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEpD,mDAAmD;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,WAAW;IACX,MAAM;IACN,UAAU;IACV,aAAa;IACb,YAAY;CACb,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { CliCommandMeta } from '../cli/registry.js';
|
|
2
|
+
import type { GuardDefinition } from './guard.js';
|
|
3
|
+
import type { MetaphorDefinition } from './metaphor.js';
|
|
4
|
+
import type { RoleDefinition } from './roles.js';
|
|
5
|
+
import { PAR_THRESHOLDS, SLOPE_FACTORS, SCORE_LABELS, HAZARD_SEVERITY_PENALTIES } from './constants.js';
|
|
6
|
+
export interface ChangelogChange {
|
|
7
|
+
type: 'feat' | 'fix' | 'chore' | 'docs' | 'refactor' | 'test' | 'other';
|
|
8
|
+
scope?: string;
|
|
9
|
+
description: string;
|
|
10
|
+
breaking: boolean;
|
|
11
|
+
hash?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ChangelogEntry {
|
|
14
|
+
version: string;
|
|
15
|
+
date: string;
|
|
16
|
+
changes: ChangelogChange[];
|
|
17
|
+
}
|
|
18
|
+
export interface ChangelogSection {
|
|
19
|
+
status: 'success' | 'partial' | 'unavailable';
|
|
20
|
+
entries: ChangelogEntry[];
|
|
21
|
+
reason?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface DocsManifestInput {
|
|
24
|
+
version: string;
|
|
25
|
+
gitSha: string;
|
|
26
|
+
changelog: ChangelogSection;
|
|
27
|
+
commands: readonly CliCommandMeta[];
|
|
28
|
+
}
|
|
29
|
+
export interface DocsManifest {
|
|
30
|
+
version: string;
|
|
31
|
+
generatedAt: string;
|
|
32
|
+
gitSha: string;
|
|
33
|
+
checksums: Record<string, string>;
|
|
34
|
+
commands: readonly CliCommandMeta[];
|
|
35
|
+
guards: GuardDefinition[];
|
|
36
|
+
metaphors: MetaphorDefinition[];
|
|
37
|
+
roles: RoleDefinition[];
|
|
38
|
+
constants: {
|
|
39
|
+
parThresholds: typeof PAR_THRESHOLDS;
|
|
40
|
+
slopeFactors: typeof SLOPE_FACTORS;
|
|
41
|
+
scoreLabels: typeof SCORE_LABELS;
|
|
42
|
+
hazardPenalties: typeof HAZARD_SEVERITY_PENALTIES;
|
|
43
|
+
};
|
|
44
|
+
changelog: ChangelogSection;
|
|
45
|
+
}
|
|
46
|
+
/** Compute a deterministic SHA-256 checksum for a data section */
|
|
47
|
+
export declare function computeSectionChecksum(data: unknown): string;
|
|
48
|
+
/** Build a complete documentation manifest from pre-computed input. Pure function — no I/O. */
|
|
49
|
+
export declare function buildDocsManifest(input: DocsManifestInput): DocsManifest;
|
|
50
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/core/docs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE;QACT,aAAa,EAAE,OAAO,cAAc,CAAC;QACrC,YAAY,EAAE,OAAO,aAAa,CAAC;QACnC,WAAW,EAAE,OAAO,YAAY,CAAC;QACjC,eAAe,EAAE,OAAO,yBAAyB,CAAC;KACnD,CAAC;IACF,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAeD,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAI5D;AAID,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAyCxE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// SLOPE — Documentation Manifest Builder
|
|
2
|
+
// Pure functions — no filesystem or git I/O.
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { GUARD_DEFINITIONS } from './guard.js';
|
|
5
|
+
import { listMetaphors } from './metaphor.js';
|
|
6
|
+
import { listRoles } from './roles.js';
|
|
7
|
+
import { PAR_THRESHOLDS, SLOPE_FACTORS, SCORE_LABELS, HAZARD_SEVERITY_PENALTIES, } from './constants.js';
|
|
8
|
+
// ── Checksum ───────────────────────────────────────────────────
|
|
9
|
+
/** Recursively sort object keys for deterministic serialization */
|
|
10
|
+
function sortObjectKeys(value) {
|
|
11
|
+
if (value === null || typeof value !== 'object')
|
|
12
|
+
return value;
|
|
13
|
+
if (Array.isArray(value))
|
|
14
|
+
return value.map(sortObjectKeys);
|
|
15
|
+
const sorted = {};
|
|
16
|
+
for (const key of Object.keys(value).sort()) {
|
|
17
|
+
sorted[key] = sortObjectKeys(value[key]);
|
|
18
|
+
}
|
|
19
|
+
return sorted;
|
|
20
|
+
}
|
|
21
|
+
/** Compute a deterministic SHA-256 checksum for a data section */
|
|
22
|
+
export function computeSectionChecksum(data) {
|
|
23
|
+
const sorted = sortObjectKeys(data);
|
|
24
|
+
const json = JSON.stringify(sorted);
|
|
25
|
+
return createHash('sha256').update(json).digest('hex');
|
|
26
|
+
}
|
|
27
|
+
// ── Builder ────────────────────────────────────────────────────
|
|
28
|
+
/** Build a complete documentation manifest from pre-computed input. Pure function — no I/O. */
|
|
29
|
+
export function buildDocsManifest(input) {
|
|
30
|
+
const metaphors = listMetaphors();
|
|
31
|
+
if (metaphors.length === 0) {
|
|
32
|
+
console.warn('Warning: metaphor registry is empty — manifest will have no metaphors');
|
|
33
|
+
}
|
|
34
|
+
const roles = listRoles();
|
|
35
|
+
const guards = [...GUARD_DEFINITIONS];
|
|
36
|
+
const constants = {
|
|
37
|
+
parThresholds: PAR_THRESHOLDS,
|
|
38
|
+
slopeFactors: SLOPE_FACTORS,
|
|
39
|
+
scoreLabels: SCORE_LABELS,
|
|
40
|
+
hazardPenalties: HAZARD_SEVERITY_PENALTIES,
|
|
41
|
+
};
|
|
42
|
+
const sections = {
|
|
43
|
+
commands: input.commands,
|
|
44
|
+
guards,
|
|
45
|
+
metaphors,
|
|
46
|
+
roles,
|
|
47
|
+
constants,
|
|
48
|
+
changelog: input.changelog,
|
|
49
|
+
};
|
|
50
|
+
const checksums = {};
|
|
51
|
+
for (const [key, value] of Object.entries(sections)) {
|
|
52
|
+
checksums[key] = computeSectionChecksum(value);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
version: input.version,
|
|
56
|
+
generatedAt: new Date().toISOString(),
|
|
57
|
+
gitSha: input.gitSha,
|
|
58
|
+
checksums,
|
|
59
|
+
commands: input.commands,
|
|
60
|
+
guards,
|
|
61
|
+
metaphors,
|
|
62
|
+
roles,
|
|
63
|
+
constants,
|
|
64
|
+
changelog: input.changelog,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/core/docs.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,6CAA6C;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAkDxB,kEAAkE;AAElE,mEAAmE;AACnE,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,sBAAsB,CAAC,IAAa;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,kEAAkE;AAElE,+FAA+F;AAC/F,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG;QAChB,aAAa,EAAE,cAAc;QAC7B,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,yBAAyB;KAC3C,CAAC;IAEF,MAAM,QAAQ,GAA4B;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,SAAS;QACT,KAAK;QACL,SAAS;QACT,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IAEF,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,SAAS,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS;QACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,SAAS;QACT,KAAK;QACL,SAAS;QACT,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RepoProfile } from '../analyzers/types.js';
|
|
1
|
+
import type { RepoProfile, VisionDocument } from '../analyzers/types.js';
|
|
2
2
|
import type { ComplexityProfile } from '../analyzers/complexity.js';
|
|
3
3
|
import type { MergedBacklog } from '../analyzers/backlog-merged.js';
|
|
4
4
|
import type { RoadmapDefinition } from '../roadmap.js';
|
|
@@ -11,4 +11,9 @@ import type { RoadmapDefinition } from '../roadmap.js';
|
|
|
11
11
|
* 3. No remote data → fall back to local TODO clusters
|
|
12
12
|
*/
|
|
13
13
|
export declare function generateRoadmap(profile: RepoProfile, complexity: ComplexityProfile, backlog: MergedBacklog): RoadmapDefinition;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a roadmap from a vision document + merged backlog.
|
|
16
|
+
* Groups backlog items into sprints aligned with vision priorities.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateRoadmapFromVision(vision: VisionDocument, backlog: MergedBacklog, complexity?: ComplexityProfile): RoadmapDefinition;
|
|
14
19
|
//# sourceMappingURL=roadmap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../../src/core/generators/roadmap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../../src/core/generators/roadmap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAA2D,MAAM,eAAe,CAAC;AAMhH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,aAAa,GACrB,iBAAiB,CAcnB;AA6OD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,EACtB,UAAU,CAAC,EAAE,iBAAiB,GAC7B,iBAAiB,CAqHnB"}
|