@slope-dev/slope 1.52.0 → 1.54.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/agent.d.ts +35 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +345 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/briefing.d.ts.map +1 -1
- package/dist/cli/commands/briefing.js +5 -3
- package/dist/cli/commands/briefing.js.map +1 -1
- package/dist/cli/commands/commit-ready.d.ts +29 -0
- package/dist/cli/commands/commit-ready.d.ts.map +1 -0
- package/dist/cli/commands/commit-ready.js +263 -0
- package/dist/cli/commands/commit-ready.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +97 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/gate.d.ts +2 -0
- package/dist/cli/commands/gate.d.ts.map +1 -0
- package/dist/cli/commands/gate.js +175 -0
- package/dist/cli/commands/gate.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 +23 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +14 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +230 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/pr.d.ts +49 -0
- package/dist/cli/commands/pr.d.ts.map +1 -0
- package/dist/cli/commands/pr.js +214 -0
- package/dist/cli/commands/pr.js.map +1 -0
- package/dist/cli/commands/review-state.d.ts +1 -2
- package/dist/cli/commands/review-state.d.ts.map +1 -1
- package/dist/cli/commands/review-state.js +79 -25
- package/dist/cli/commands/review-state.js.map +1 -1
- package/dist/cli/commands/roadmap.d.ts.map +1 -1
- package/dist/cli/commands/roadmap.js +31 -4
- package/dist/cli/commands/roadmap.js.map +1 -1
- package/dist/cli/commands/sprint-plan.d.ts +21 -0
- package/dist/cli/commands/sprint-plan.d.ts.map +1 -0
- package/dist/cli/commands/sprint-plan.js +226 -0
- package/dist/cli/commands/sprint-plan.js.map +1 -0
- package/dist/cli/commands/sprint.d.ts.map +1 -1
- package/dist/cli/commands/sprint.js +137 -0
- package/dist/cli/commands/sprint.js.map +1 -1
- package/dist/cli/commands/ticket.d.ts +9 -0
- package/dist/cli/commands/ticket.d.ts.map +1 -0
- package/dist/cli/commands/ticket.js +168 -0
- package/dist/cli/commands/ticket.js.map +1 -0
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +33 -4
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/vision.d.ts.map +1 -1
- package/dist/cli/commands/vision.js +14 -1
- package/dist/cli/commands/vision.js.map +1 -1
- package/dist/cli/guards/branch-before-commit.d.ts.map +1 -1
- package/dist/cli/guards/branch-before-commit.js +2 -1
- package/dist/cli/guards/branch-before-commit.js.map +1 -1
- package/dist/cli/guards/claim-required.d.ts +6 -0
- package/dist/cli/guards/claim-required.d.ts.map +1 -1
- package/dist/cli/guards/claim-required.js +13 -3
- package/dist/cli/guards/claim-required.js.map +1 -1
- package/dist/cli/guards/next-action.d.ts.map +1 -1
- package/dist/cli/guards/next-action.js +3 -2
- package/dist/cli/guards/next-action.js.map +1 -1
- package/dist/cli/guards/post-hole-enforcement.d.ts +18 -0
- package/dist/cli/guards/post-hole-enforcement.d.ts.map +1 -0
- package/dist/cli/guards/post-hole-enforcement.js +100 -0
- package/dist/cli/guards/post-hole-enforcement.js.map +1 -0
- package/dist/cli/guards/pr-review.d.ts +16 -1
- package/dist/cli/guards/pr-review.d.ts.map +1 -1
- package/dist/cli/guards/pr-review.js +87 -5
- package/dist/cli/guards/pr-review.js.map +1 -1
- package/dist/cli/guards/roadmap-edit-shipped.d.ts +12 -0
- package/dist/cli/guards/roadmap-edit-shipped.d.ts.map +1 -0
- package/dist/cli/guards/roadmap-edit-shipped.js +155 -0
- package/dist/cli/guards/roadmap-edit-shipped.js.map +1 -0
- package/dist/cli/index.js +47 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/registry.d.ts +1 -1
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/registry.js +78 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/core/analyzers/git.d.ts +14 -0
- package/dist/core/analyzers/git.d.ts.map +1 -1
- package/dist/core/analyzers/git.js +47 -0
- package/dist/core/analyzers/git.js.map +1 -1
- package/dist/core/auto-memory.d.ts +19 -0
- package/dist/core/auto-memory.d.ts.map +1 -0
- package/dist/core/auto-memory.js +142 -0
- package/dist/core/auto-memory.js.map +1 -0
- package/dist/core/formatter.d.ts.map +1 -1
- package/dist/core/formatter.js +51 -2
- package/dist/core/formatter.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 +16 -0
- package/dist/core/guard.js.map +1 -1
- package/dist/core/index.d.ts +6 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/json-memory-backend.d.ts +23 -0
- package/dist/core/json-memory-backend.d.ts.map +1 -0
- package/dist/core/json-memory-backend.js +98 -0
- package/dist/core/json-memory-backend.js.map +1 -0
- package/dist/core/memory-backend.d.ts +30 -0
- package/dist/core/memory-backend.d.ts.map +1 -0
- package/dist/core/memory-backend.js +14 -0
- package/dist/core/memory-backend.js.map +1 -0
- package/dist/core/memory-types.d.ts +25 -0
- package/dist/core/memory-types.d.ts.map +1 -0
- package/dist/core/memory-types.js +4 -0
- package/dist/core/memory-types.js.map +1 -0
- package/dist/core/memory-validation.d.ts +4 -0
- package/dist/core/memory-validation.d.ts.map +1 -0
- package/dist/core/memory-validation.js +35 -0
- package/dist/core/memory-validation.js.map +1 -0
- package/dist/core/memory.d.ts +41 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +167 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/pi-settings.d.ts.map +1 -1
- package/dist/core/pi-settings.js +12 -0
- package/dist/core/pi-settings.js.map +1 -1
- package/dist/core/review.d.ts.map +1 -1
- package/dist/core/review.js +5 -0
- package/dist/core/review.js.map +1 -1
- package/dist/core/roadmap.d.ts +16 -2
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/roadmap.js +81 -24
- package/dist/core/roadmap.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 +68 -1
- package/dist/core/vision.js.map +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +18 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/sqlite-memory-backend.d.ts +43 -0
- package/dist/store/sqlite-memory-backend.d.ts.map +1 -0
- package/dist/store/sqlite-memory-backend.js +181 -0
- package/dist/store/sqlite-memory-backend.js.map +1 -0
- package/dist/store-pg/index.d.ts.map +1 -1
- package/dist/store-pg/index.js +23 -0
- package/dist/store-pg/index.js.map +1 -1
- package/package.json +1 -1
- package/packages/pi-extension/dist/index.d.ts +19 -0
- package/packages/pi-extension/dist/index.js +435 -17
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slope agent status` — machine-readable operational status (GH #310).
|
|
3
|
+
*
|
|
4
|
+
* Surface a single source of truth that AI agents can consume without
|
|
5
|
+
* orchestrating sprint/roadmap/initiative/status commands themselves.
|
|
6
|
+
*
|
|
7
|
+
* `--json` emits the AgentStatus object exactly. Default output is a
|
|
8
|
+
* compact human-readable summary derived from the same data.
|
|
9
|
+
*/
|
|
10
|
+
/** AgentStatus schema version. Bumped when the JSON shape changes in a
|
|
11
|
+
* breaking way — agents consuming this should check `_version` and refuse
|
|
12
|
+
* unknown values rather than risk silent misinterpretation. */
|
|
13
|
+
export declare const AGENT_STATUS_VERSION = 1;
|
|
14
|
+
export interface AgentStatus {
|
|
15
|
+
/** Schema version — bumped on breaking changes to the JSON shape. */
|
|
16
|
+
_version: number;
|
|
17
|
+
vision: 'present' | 'missing';
|
|
18
|
+
roadmap: 'valid' | 'invalid' | 'missing';
|
|
19
|
+
currentSprint: number | null;
|
|
20
|
+
/** Sprint phase (sprint-state) OR initiative gate phase. 'pr_review' and
|
|
21
|
+
* 'plan_review' come from the initiative subsystem; the others come from
|
|
22
|
+
* sprint-state.json. 'unknown' = no state on disk. */
|
|
23
|
+
phase: 'planning' | 'plan_review' | 'reviewing' | 'implementing' | 'scoring' | 'pr_review' | 'complete' | 'unknown';
|
|
24
|
+
activeClaims: string[];
|
|
25
|
+
nextTicket: string | null;
|
|
26
|
+
blockedBy: number[];
|
|
27
|
+
requiredGates: string[];
|
|
28
|
+
recommendedCommands: string[];
|
|
29
|
+
}
|
|
30
|
+
export declare function agentCommand(args: string[]): Promise<void>;
|
|
31
|
+
export declare function collectAgentStatus(cwd: string): Promise<AgentStatus>;
|
|
32
|
+
export declare function renderAgentMarkdown(s: AgentStatus, opts?: {
|
|
33
|
+
sprintTheme?: string;
|
|
34
|
+
}): string;
|
|
35
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AAEH;;gEAEgE;AAChE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;2DAEuD;IACvD,KAAK,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACpH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhE;AAsCD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAkG1E;AA6HD,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,WAAW,EACd,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,MAAM,CAqDR"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { parseRoadmap, detectLatestSprint, } from '../../core/index.js';
|
|
4
|
+
import { loadConfig } from '../config.js';
|
|
5
|
+
import { loadSprintState } from '../sprint-state.js';
|
|
6
|
+
import { resolveStore } from '../store.js';
|
|
7
|
+
/**
|
|
8
|
+
* `slope agent status` — machine-readable operational status (GH #310).
|
|
9
|
+
*
|
|
10
|
+
* Surface a single source of truth that AI agents can consume without
|
|
11
|
+
* orchestrating sprint/roadmap/initiative/status commands themselves.
|
|
12
|
+
*
|
|
13
|
+
* `--json` emits the AgentStatus object exactly. Default output is a
|
|
14
|
+
* compact human-readable summary derived from the same data.
|
|
15
|
+
*/
|
|
16
|
+
/** AgentStatus schema version. Bumped when the JSON shape changes in a
|
|
17
|
+
* breaking way — agents consuming this should check `_version` and refuse
|
|
18
|
+
* unknown values rather than risk silent misinterpretation. */
|
|
19
|
+
export const AGENT_STATUS_VERSION = 1;
|
|
20
|
+
export async function agentCommand(args) {
|
|
21
|
+
const sub = args[0];
|
|
22
|
+
if (sub === '--help' || sub === '-h') {
|
|
23
|
+
printHelp();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (sub === 'status' || sub === undefined) {
|
|
27
|
+
await statusSubcommand(args.slice(sub === 'status' ? 1 : 0));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (sub === 'next-md') {
|
|
31
|
+
await nextMdSubcommand(args.slice(1));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
console.error(`\nUnknown agent subcommand: ${sub}\n`);
|
|
35
|
+
printHelp();
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
function printHelp() {
|
|
39
|
+
console.log(`
|
|
40
|
+
slope agent — Machine-readable operational primitives for AI agents
|
|
41
|
+
|
|
42
|
+
Usage:
|
|
43
|
+
slope agent status Show current state (human-readable)
|
|
44
|
+
slope agent status --json Emit AgentStatus JSON
|
|
45
|
+
slope agent next-md Generate AGENT_NEXT.md (current-state handoff)
|
|
46
|
+
slope agent next-md --output=<path> Write to a custom path
|
|
47
|
+
|
|
48
|
+
Output fields (status):
|
|
49
|
+
vision 'present' | 'missing'
|
|
50
|
+
roadmap 'valid' | 'invalid' | 'missing'
|
|
51
|
+
currentSprint number | null
|
|
52
|
+
phase planning | reviewing | implementing | scoring | complete | unknown
|
|
53
|
+
activeClaims ticket keys currently claimed
|
|
54
|
+
nextTicket recommended next ticket key
|
|
55
|
+
blockedBy sprint IDs blocking the current/next sprint
|
|
56
|
+
requiredGates pending gate names (e.g. tests, code_review)
|
|
57
|
+
recommendedCommands ordered list of next CLI invocations
|
|
58
|
+
`);
|
|
59
|
+
}
|
|
60
|
+
async function statusSubcommand(args) {
|
|
61
|
+
const json = args.includes('--json');
|
|
62
|
+
const cwd = process.cwd();
|
|
63
|
+
const status = await collectAgentStatus(cwd);
|
|
64
|
+
if (json) {
|
|
65
|
+
console.log(JSON.stringify(status, null, 2));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
printHumanStatus(status);
|
|
69
|
+
}
|
|
70
|
+
export async function collectAgentStatus(cwd) {
|
|
71
|
+
const config = loadConfig(cwd);
|
|
72
|
+
// Vision
|
|
73
|
+
const visionPath = join(cwd, '.slope', 'vision.json');
|
|
74
|
+
const vision = existsSync(visionPath) ? 'present' : 'missing';
|
|
75
|
+
// Roadmap
|
|
76
|
+
let roadmap = null;
|
|
77
|
+
let roadmapState = 'missing';
|
|
78
|
+
const roadmapPath = join(cwd, config.roadmapPath);
|
|
79
|
+
if (existsSync(roadmapPath)) {
|
|
80
|
+
try {
|
|
81
|
+
const raw = JSON.parse(readFileSync(roadmapPath, 'utf8'));
|
|
82
|
+
const parsed = parseRoadmap(raw);
|
|
83
|
+
roadmap = parsed.roadmap;
|
|
84
|
+
roadmapState = parsed.validation.valid ? 'valid' : 'invalid';
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
roadmapState = 'invalid';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Current sprint — sprint-state.json wins; otherwise fall back to detectLatestSprint
|
|
91
|
+
const sprintState = loadSprintState(cwd);
|
|
92
|
+
let currentSprint = sprintState?.sprint ?? null;
|
|
93
|
+
if (currentSprint == null) {
|
|
94
|
+
try {
|
|
95
|
+
const latest = detectLatestSprint(config, cwd);
|
|
96
|
+
currentSprint = latest > 0 ? latest : null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// best-effort
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Phase
|
|
103
|
+
const phase = sprintState?.phase ?? 'unknown';
|
|
104
|
+
// Active claims (from store)
|
|
105
|
+
const activeClaims = [];
|
|
106
|
+
if (currentSprint != null) {
|
|
107
|
+
try {
|
|
108
|
+
const store = await resolveStore(cwd);
|
|
109
|
+
const claims = await store.list(currentSprint);
|
|
110
|
+
for (const c of claims) {
|
|
111
|
+
if (c.target)
|
|
112
|
+
activeClaims.push(c.target);
|
|
113
|
+
}
|
|
114
|
+
store.close();
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// store unavailable — return empty
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Next ticket: first ticket of the current sprint not currently claimed
|
|
121
|
+
let nextTicket = null;
|
|
122
|
+
let blockedBy = [];
|
|
123
|
+
if (roadmap && currentSprint != null) {
|
|
124
|
+
const sprint = roadmap.sprints.find(s => s.id === currentSprint);
|
|
125
|
+
if (sprint) {
|
|
126
|
+
const claimed = new Set(activeClaims);
|
|
127
|
+
const next = sprint.tickets.find(t => !claimed.has(t.key));
|
|
128
|
+
nextTicket = next?.key ?? null;
|
|
129
|
+
blockedBy = computeBlockers(roadmap, sprint);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Required gates (pending)
|
|
133
|
+
const requiredGates = [];
|
|
134
|
+
if (sprintState) {
|
|
135
|
+
for (const [gate, done] of Object.entries(sprintState.gates)) {
|
|
136
|
+
if (!done)
|
|
137
|
+
requiredGates.push(gate);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Recommend commands based on combined state
|
|
141
|
+
const recommendedCommands = recommendCommands({
|
|
142
|
+
vision,
|
|
143
|
+
roadmap: roadmapState,
|
|
144
|
+
currentSprint,
|
|
145
|
+
phase,
|
|
146
|
+
activeClaims,
|
|
147
|
+
nextTicket,
|
|
148
|
+
blockedBy,
|
|
149
|
+
requiredGates,
|
|
150
|
+
sprintState,
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
_version: AGENT_STATUS_VERSION,
|
|
154
|
+
vision,
|
|
155
|
+
roadmap: roadmapState,
|
|
156
|
+
currentSprint,
|
|
157
|
+
phase,
|
|
158
|
+
activeClaims,
|
|
159
|
+
nextTicket,
|
|
160
|
+
blockedBy,
|
|
161
|
+
requiredGates,
|
|
162
|
+
recommendedCommands,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function computeBlockers(roadmap, sprint) {
|
|
166
|
+
const completedIds = new Set(roadmap.sprints
|
|
167
|
+
.filter(s => s.status === 'complete')
|
|
168
|
+
.map(s => s.id));
|
|
169
|
+
return (sprint.depends_on ?? []).filter(d => !completedIds.has(d));
|
|
170
|
+
}
|
|
171
|
+
function recommendCommands(state) {
|
|
172
|
+
const cmds = [];
|
|
173
|
+
// Bootstrap — missing fundamentals come first
|
|
174
|
+
if (state.vision === 'missing') {
|
|
175
|
+
cmds.push('slope vision create --purpose="..." --priorities="a,b,c"');
|
|
176
|
+
return cmds;
|
|
177
|
+
}
|
|
178
|
+
if (state.roadmap === 'missing') {
|
|
179
|
+
cmds.push('slope roadmap generate');
|
|
180
|
+
return cmds;
|
|
181
|
+
}
|
|
182
|
+
if (state.roadmap === 'invalid') {
|
|
183
|
+
cmds.push('slope roadmap validate');
|
|
184
|
+
// Continue on — agent may still want to know what to do beyond fixing
|
|
185
|
+
}
|
|
186
|
+
// No active sprint state
|
|
187
|
+
if (state.sprintState == null) {
|
|
188
|
+
if (state.currentSprint != null) {
|
|
189
|
+
cmds.push(`slope sprint start --sprint=${state.currentSprint}`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
cmds.push('slope briefing');
|
|
193
|
+
}
|
|
194
|
+
return cmds;
|
|
195
|
+
}
|
|
196
|
+
// Blocked by upstream sprint
|
|
197
|
+
if (state.blockedBy.length > 0) {
|
|
198
|
+
cmds.push(`slope roadmap status`);
|
|
199
|
+
return cmds;
|
|
200
|
+
}
|
|
201
|
+
// Phase-driven recommendations
|
|
202
|
+
switch (state.phase) {
|
|
203
|
+
case 'planning':
|
|
204
|
+
cmds.push('slope briefing');
|
|
205
|
+
if (state.nextTicket) {
|
|
206
|
+
cmds.push(`slope prep ${state.nextTicket} --lite`);
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
case 'reviewing':
|
|
210
|
+
cmds.push('slope review status');
|
|
211
|
+
cmds.push('slope review round');
|
|
212
|
+
break;
|
|
213
|
+
case 'implementing':
|
|
214
|
+
if (state.activeClaims.length === 0 && state.nextTicket) {
|
|
215
|
+
cmds.push(`slope claim ${state.nextTicket}`);
|
|
216
|
+
}
|
|
217
|
+
else if (state.requiredGates.length > 0) {
|
|
218
|
+
for (const g of state.requiredGates.slice(0, 2)) {
|
|
219
|
+
cmds.push(`slope sprint gate ${g}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
break;
|
|
223
|
+
case 'scoring':
|
|
224
|
+
if (state.requiredGates.includes('scorecard')) {
|
|
225
|
+
cmds.push(`slope auto-card --sprint=${state.currentSprint}`);
|
|
226
|
+
cmds.push('slope validate');
|
|
227
|
+
}
|
|
228
|
+
if (state.requiredGates.includes('review_md')) {
|
|
229
|
+
cmds.push('slope review');
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
case 'complete':
|
|
233
|
+
cmds.push('slope sprint reset');
|
|
234
|
+
cmds.push('slope briefing');
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
return cmds;
|
|
238
|
+
}
|
|
239
|
+
async function nextMdSubcommand(args) {
|
|
240
|
+
const cwd = process.cwd();
|
|
241
|
+
const status = await collectAgentStatus(cwd);
|
|
242
|
+
// Pull sprint theme from roadmap if available, for nicer rendering
|
|
243
|
+
let sprintTheme;
|
|
244
|
+
try {
|
|
245
|
+
const config = loadConfig(cwd);
|
|
246
|
+
const roadmapPath = join(cwd, config.roadmapPath);
|
|
247
|
+
if (existsSync(roadmapPath)) {
|
|
248
|
+
const raw = JSON.parse(readFileSync(roadmapPath, 'utf8'));
|
|
249
|
+
const parsed = parseRoadmap(raw);
|
|
250
|
+
const sprint = parsed.roadmap?.sprints.find(s => s.id === status.currentSprint);
|
|
251
|
+
sprintTheme = sprint?.theme;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch { /* best-effort */ }
|
|
255
|
+
const md = renderAgentMarkdown(status, { sprintTheme });
|
|
256
|
+
const outputArg = args.find(a => a.startsWith('--output='));
|
|
257
|
+
// Reject --output= (empty value) and undefined splits — fall back to default
|
|
258
|
+
// path. Without this, an empty value would write to the cwd as a file named
|
|
259
|
+
// ''.
|
|
260
|
+
const outputPath = (outputArg && outputArg.length > '--output='.length)
|
|
261
|
+
? outputArg.slice('--output='.length)
|
|
262
|
+
: 'AGENT_NEXT.md';
|
|
263
|
+
const absPath = join(cwd, outputPath);
|
|
264
|
+
writeFileSync(absPath, md);
|
|
265
|
+
console.log(`Wrote ${outputPath}`);
|
|
266
|
+
}
|
|
267
|
+
export function renderAgentMarkdown(s, opts = {}) {
|
|
268
|
+
const lines = [];
|
|
269
|
+
const sprintLabel = s.currentSprint != null
|
|
270
|
+
? `S${s.currentSprint}${opts.sprintTheme ? ` ${opts.sprintTheme}` : ''}`
|
|
271
|
+
: '—';
|
|
272
|
+
lines.push('# Agent Next');
|
|
273
|
+
lines.push('');
|
|
274
|
+
lines.push('<!-- Generated by `slope agent next-md`. Not a durable doc — regenerate after sprint state changes. -->');
|
|
275
|
+
lines.push('');
|
|
276
|
+
lines.push(`Current sprint: ${sprintLabel}`);
|
|
277
|
+
lines.push(`Current phase: ${s.phase}`);
|
|
278
|
+
lines.push(`Current claim: ${s.activeClaims.length > 0 ? s.activeClaims.join(', ') + ' active' : 'none'}`);
|
|
279
|
+
lines.push(`Next ticket: ${s.nextTicket ?? '—'}`);
|
|
280
|
+
lines.push(`Next command: ${s.recommendedCommands[0] ?? '—'}`);
|
|
281
|
+
lines.push('');
|
|
282
|
+
if (s.blockedBy.length > 0) {
|
|
283
|
+
lines.push('## Blocked');
|
|
284
|
+
lines.push('');
|
|
285
|
+
lines.push(`This sprint is blocked by: ${s.blockedBy.map(id => `S${id}`).join(', ')}`);
|
|
286
|
+
lines.push('');
|
|
287
|
+
lines.push('Resolve those before proceeding here.');
|
|
288
|
+
lines.push('');
|
|
289
|
+
}
|
|
290
|
+
if (s.requiredGates.length > 0) {
|
|
291
|
+
lines.push('## Pending gates');
|
|
292
|
+
lines.push('');
|
|
293
|
+
for (const g of s.requiredGates) {
|
|
294
|
+
lines.push(`- ${g}`);
|
|
295
|
+
}
|
|
296
|
+
lines.push('');
|
|
297
|
+
}
|
|
298
|
+
if (s.recommendedCommands.length > 0) {
|
|
299
|
+
lines.push('## Recommended commands');
|
|
300
|
+
lines.push('');
|
|
301
|
+
for (const c of s.recommendedCommands) {
|
|
302
|
+
lines.push(`- \`${c}\``);
|
|
303
|
+
}
|
|
304
|
+
lines.push('');
|
|
305
|
+
}
|
|
306
|
+
// Provenance: state snapshot for agents that want raw data inline
|
|
307
|
+
lines.push('## Status snapshot');
|
|
308
|
+
lines.push('');
|
|
309
|
+
lines.push('```json');
|
|
310
|
+
lines.push(JSON.stringify(s, null, 2));
|
|
311
|
+
lines.push('```');
|
|
312
|
+
lines.push('');
|
|
313
|
+
return lines.join('\n');
|
|
314
|
+
}
|
|
315
|
+
function printHumanStatus(s) {
|
|
316
|
+
const lines = [];
|
|
317
|
+
lines.push('');
|
|
318
|
+
lines.push('SLOPE AGENT STATUS');
|
|
319
|
+
lines.push('═'.repeat(50));
|
|
320
|
+
lines.push(` Vision: ${s.vision}`);
|
|
321
|
+
lines.push(` Roadmap: ${s.roadmap}`);
|
|
322
|
+
lines.push(` Sprint: ${s.currentSprint ?? '—'}`);
|
|
323
|
+
lines.push(` Phase: ${s.phase}`);
|
|
324
|
+
lines.push(` Claims: ${s.activeClaims.length > 0 ? s.activeClaims.join(', ') : 'none'}`);
|
|
325
|
+
lines.push(` Next ticket: ${s.nextTicket ?? '—'}`);
|
|
326
|
+
if (s.blockedBy.length > 0) {
|
|
327
|
+
lines.push(` Blocked by: ${s.blockedBy.map(id => `S${id}`).join(', ')}`);
|
|
328
|
+
}
|
|
329
|
+
if (s.requiredGates.length > 0) {
|
|
330
|
+
lines.push(` Pending gates: ${s.requiredGates.join(', ')}`);
|
|
331
|
+
}
|
|
332
|
+
lines.push('');
|
|
333
|
+
if (s.recommendedCommands.length > 0) {
|
|
334
|
+
lines.push('RECOMMENDED NEXT COMMANDS:');
|
|
335
|
+
for (const c of s.recommendedCommands) {
|
|
336
|
+
lines.push(` $ ${c}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
lines.push('No recommended commands — state is balanced.');
|
|
341
|
+
}
|
|
342
|
+
lines.push('');
|
|
343
|
+
console.log(lines.join('\n'));
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/briefing.ts"],"names":[],"mappings":"AASA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/briefing.ts"],"names":[],"mappings":"AASA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiKnE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync, existsSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { formatBriefing, parseRoadmap, getRole, hasRole, loadCustomRoles, filterScorecardsByPlayer, filterHazardsByVisibility, formatDeferredForBriefing, loadDeferred, computeHandicapCard, formatStrategicContext } from '../../core/index.js';
|
|
3
|
+
import { formatBriefing, parseRoadmap, castRoadmapStructure, getRole, hasRole, loadCustomRoles, filterScorecardsByPlayer, filterHazardsByVisibility, formatDeferredForBriefing, loadDeferred, computeHandicapCard, formatStrategicContext } from '../../core/index.js';
|
|
4
4
|
import { loadConfig } from '../config.js';
|
|
5
5
|
import { loadScorecards } from '../loader.js';
|
|
6
6
|
import { resolveStore } from '../store.js';
|
|
@@ -112,8 +112,10 @@ export async function briefingCommand(args) {
|
|
|
112
112
|
if (existsSync(resolvedRoadmapPath)) {
|
|
113
113
|
const raw = JSON.parse(readFileSync(resolvedRoadmapPath, 'utf8'));
|
|
114
114
|
const parsed = parseRoadmap(raw);
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
// Fall back to permissive structural cast when parseRoadmap rejects due
|
|
116
|
+
// to validation errors (numbering gaps, ticket-count budget, etc.) —
|
|
117
|
+
// briefing should still surface strategic context when shape is right.
|
|
118
|
+
roadmap = parsed.roadmap ?? castRoadmapStructure(raw) ?? undefined;
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
catch { /* skip — roadmap is optional */ }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../../../src/cli/commands/briefing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"briefing.js","sourceRoot":"","sources":["../../../src/cli/commands/briefing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slope commit-ready` — pre-commit checklist for agents (#314).
|
|
3
|
+
*
|
|
4
|
+
* Inspects the working state across multiple subsystems and reports a
|
|
5
|
+
* structured verdict: are we safe to commit, and if not, what remains.
|
|
6
|
+
*
|
|
7
|
+
* slope commit-ready Human-readable
|
|
8
|
+
* slope commit-ready --json Machine-readable
|
|
9
|
+
*
|
|
10
|
+
* The command is non-blocking — it never fails the shell with a non-zero
|
|
11
|
+
* exit by default; callers must check `ok` in the JSON output. Pass
|
|
12
|
+
* --strict to exit non-zero when any check fails.
|
|
13
|
+
*/
|
|
14
|
+
export interface CommitReadyCheck {
|
|
15
|
+
name: string;
|
|
16
|
+
ok: boolean;
|
|
17
|
+
severity: 'block' | 'warn' | 'info';
|
|
18
|
+
reason?: string;
|
|
19
|
+
suggestion?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CommitReadyResult {
|
|
22
|
+
ok: boolean;
|
|
23
|
+
blockers: number;
|
|
24
|
+
warnings: number;
|
|
25
|
+
checks: CommitReadyCheck[];
|
|
26
|
+
}
|
|
27
|
+
export declare function commitReadyCommand(args: string[]): Promise<void>;
|
|
28
|
+
export declare function collectCommitReady(cwd: string): Promise<CommitReadyResult>;
|
|
29
|
+
//# sourceMappingURL=commit-ready.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-ready.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/commit-ready.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuBhF"}
|