@kynetic-ai/spec 0.5.0 → 0.7.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/batch.d.ts.map +1 -1
- package/dist/cli/commands/batch.js +38 -6
- package/dist/cli/commands/batch.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +42 -23
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/ralph.d.ts.map +1 -1
- package/dist/cli/commands/ralph.js +15 -2
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts +19 -0
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -0
- package/dist/cli/commands/session/checkpoint.js +161 -0
- package/dist/cli/commands/session/checkpoint.js.map +1 -0
- package/dist/cli/commands/session/commands.d.ts +18 -0
- package/dist/cli/commands/session/commands.d.ts.map +1 -0
- package/dist/cli/commands/session/commands.js +259 -0
- package/dist/cli/commands/session/commands.js.map +1 -0
- package/dist/cli/commands/session/context.d.ts +17 -0
- package/dist/cli/commands/session/context.d.ts.map +1 -0
- package/dist/cli/commands/session/context.js +493 -0
- package/dist/cli/commands/session/context.js.map +1 -0
- package/dist/cli/commands/session/create.d.ts +29 -0
- package/dist/cli/commands/session/create.d.ts.map +1 -0
- package/dist/cli/commands/session/create.js +147 -0
- package/dist/cli/commands/session/create.js.map +1 -0
- package/dist/cli/commands/session/format.d.ts +27 -0
- package/dist/cli/commands/session/format.d.ts.map +1 -0
- package/dist/cli/commands/session/format.js +401 -0
- package/dist/cli/commands/session/format.js.map +1 -0
- package/dist/cli/commands/session/index.d.ts +13 -0
- package/dist/cli/commands/session/index.d.ts.map +1 -0
- package/dist/cli/commands/session/index.js +17 -0
- package/dist/cli/commands/session/index.js.map +1 -0
- package/dist/cli/commands/session/log.d.ts +52 -0
- package/dist/cli/commands/session/log.d.ts.map +1 -0
- package/dist/cli/commands/session/log.js +570 -0
- package/dist/cli/commands/session/log.js.map +1 -0
- package/dist/cli/commands/session/types.d.ts +230 -0
- package/dist/cli/commands/session/types.d.ts.map +1 -0
- package/dist/cli/commands/session/types.js +7 -0
- package/dist/cli/commands/session/types.js.map +1 -0
- package/dist/cli/commands/session.d.ts +4 -251
- package/dist/cli/commands/session.d.ts.map +1 -1
- package/dist/cli/commands/session.js +6 -1870
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +23 -7
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/parser/shadow.d.ts +5 -1
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +18 -10
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/validate.d.ts +4 -1
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +50 -35
- package/dist/parser/validate.js.map +1 -1
- package/dist/sessions/store.d.ts +37 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +133 -5
- package/dist/sessions/store.js.map +1 -1
- package/package.json +4 -1
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/templates/agents-sections/03-task-lifecycle.md +4 -1
- package/templates/agents-sections/07-batch-usage.md +51 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session command registration.
|
|
3
|
+
*
|
|
4
|
+
* Wires up all session sub-commands with commander. This is the thin orchestration
|
|
5
|
+
* layer that imports action handlers from sub-modules.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import { initContext, } from "../../../parser/index.js";
|
|
9
|
+
import { ShadowError, shadowPull, } from "../../../parser/shadow.js";
|
|
10
|
+
import { isObject } from "../../../acp/types.js";
|
|
11
|
+
import { errors, sessionPrompt, } from "../../../strings/index.js";
|
|
12
|
+
import { markMutating } from "../../command-annotations.js";
|
|
13
|
+
import { EXIT_CODES } from "../../exit-codes.js";
|
|
14
|
+
import { error, info, isJsonMode, output, warn } from "../../output.js";
|
|
15
|
+
import { performCheckpoint } from "./checkpoint.js";
|
|
16
|
+
import { gatherSessionContext } from "./context.js";
|
|
17
|
+
import { sessionCreateAction } from "./create.js";
|
|
18
|
+
import { formatCheckpointResult, formatSessionContext } from "./format.js";
|
|
19
|
+
import { sessionLogListAction, sessionLogSearchAction, sessionLogShowAction, sessionLogStatsAction, } from "./log.js";
|
|
20
|
+
// ─── Debug Logging ──────────────────────────────────────────────────────────
|
|
21
|
+
function debugLog(message, detail) {
|
|
22
|
+
if (process.env.KSPEC_DEBUG === "1") {
|
|
23
|
+
if (detail) {
|
|
24
|
+
console.error(`[DEBUG] session/commands: ${message}`, detail);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.error(`[DEBUG] session/commands: ${message}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// ─── Action Handlers ────────────────────────────────────────────────────────
|
|
32
|
+
async function sessionStartAction(options) {
|
|
33
|
+
try {
|
|
34
|
+
const ctx = await initContext();
|
|
35
|
+
// AC: @shadow-sync ac-2 - Pull remote changes before showing session context
|
|
36
|
+
let syncResult = null;
|
|
37
|
+
if (ctx.shadow?.enabled) {
|
|
38
|
+
syncResult = await shadowPull(ctx.shadow.worktreeDir);
|
|
39
|
+
// AC: @shadow-sync ac-3 - Warn about conflicts but continue with local state
|
|
40
|
+
if (syncResult.hadConflict) {
|
|
41
|
+
warn("Shadow sync conflict detected. Run `kspec shadow resolve` to fix.");
|
|
42
|
+
info("Continuing with local state...");
|
|
43
|
+
}
|
|
44
|
+
else if (syncResult.pulled) {
|
|
45
|
+
info("Synced shadow branch from remote");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const sessionCtx = await gatherSessionContext(ctx, options);
|
|
49
|
+
output(sessionCtx, () => formatSessionContext(sessionCtx, options));
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
error(errors.failures.gatherSessionContext, err);
|
|
53
|
+
process.exit(EXIT_CODES.ERROR);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read stdin if available (non-blocking check for hook input)
|
|
58
|
+
*/
|
|
59
|
+
async function readStdinIfAvailable() {
|
|
60
|
+
// Check if stdin is a TTY (interactive) - if so, don't try to read
|
|
61
|
+
if (process.stdin.isTTY) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
let data = "";
|
|
66
|
+
const onData = (chunk) => {
|
|
67
|
+
data += chunk;
|
|
68
|
+
};
|
|
69
|
+
const onEnd = () => {
|
|
70
|
+
clearTimeout(timeout);
|
|
71
|
+
cleanup();
|
|
72
|
+
resolve(data || null);
|
|
73
|
+
};
|
|
74
|
+
const onError = () => {
|
|
75
|
+
clearTimeout(timeout);
|
|
76
|
+
cleanup();
|
|
77
|
+
resolve(null);
|
|
78
|
+
};
|
|
79
|
+
const cleanup = () => {
|
|
80
|
+
process.stdin.removeListener("data", onData);
|
|
81
|
+
process.stdin.removeListener("end", onEnd);
|
|
82
|
+
process.stdin.removeListener("error", onError);
|
|
83
|
+
};
|
|
84
|
+
const timeout = setTimeout(() => {
|
|
85
|
+
cleanup();
|
|
86
|
+
resolve(data || null);
|
|
87
|
+
}, 100); // 100ms timeout for stdin
|
|
88
|
+
process.stdin.setEncoding("utf8");
|
|
89
|
+
process.stdin.on("data", onData);
|
|
90
|
+
process.stdin.on("end", onEnd);
|
|
91
|
+
process.stdin.on("error", onError);
|
|
92
|
+
process.stdin.resume();
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parse Claude Code hook input from stdin.
|
|
97
|
+
* Returns null (with debug log) if input is missing, not valid JSON, or not an object.
|
|
98
|
+
*/
|
|
99
|
+
export function parseHookInput(stdin) {
|
|
100
|
+
if (!stdin)
|
|
101
|
+
return null;
|
|
102
|
+
try {
|
|
103
|
+
const parsed = JSON.parse(stdin.trim());
|
|
104
|
+
if (!isObject(parsed)) {
|
|
105
|
+
debugLog("parseHookInput: parsed value is not an object");
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return parsed;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
debugLog("parseHookInput: failed to parse stdin as JSON", err);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Output spec-first reminder for UserPromptSubmit hook.
|
|
117
|
+
*
|
|
118
|
+
* This is a simple context injection - always outputs the reminder,
|
|
119
|
+
* and Claude (Opus) is smart enough to apply it when relevant.
|
|
120
|
+
*/
|
|
121
|
+
async function sessionPromptCheckAction() {
|
|
122
|
+
// Lean, instructive reminder with kspec prefix
|
|
123
|
+
console.log(sessionPrompt.specCheck);
|
|
124
|
+
}
|
|
125
|
+
async function sessionCheckpointAction(options) {
|
|
126
|
+
try {
|
|
127
|
+
// Read stdin for Claude Code hook input
|
|
128
|
+
const stdin = await readStdinIfAvailable();
|
|
129
|
+
const hookInput = parseHookInput(stdin);
|
|
130
|
+
// Check if this is a retry (stop hook already active)
|
|
131
|
+
if (hookInput?.stop_hook_active) {
|
|
132
|
+
options.stopHookActive = true;
|
|
133
|
+
}
|
|
134
|
+
const ctx = await initContext();
|
|
135
|
+
const result = await performCheckpoint(ctx, options);
|
|
136
|
+
// Output format depends on mode:
|
|
137
|
+
// - JSON mode (--json): Output Claude Code hook format {"decision": "block", "reason": "..."}
|
|
138
|
+
// - Human mode: Output formatted checkpoint result
|
|
139
|
+
if (isJsonMode()) {
|
|
140
|
+
if (!result.ok) {
|
|
141
|
+
// Build reason message with issues and instructions
|
|
142
|
+
const issueLines = result.issues
|
|
143
|
+
.map((i) => `- ${i.description}`)
|
|
144
|
+
.join("\n");
|
|
145
|
+
const instructionLines = result.instructions
|
|
146
|
+
.filter((i) => i.trim())
|
|
147
|
+
.join("\n");
|
|
148
|
+
const reason = `${result.message}\n\nIssues:\n${issueLines}\n\n${instructionLines}`;
|
|
149
|
+
console.log(JSON.stringify({ decision: "block", reason }));
|
|
150
|
+
}
|
|
151
|
+
// If ok, exit silently (Claude Code expects no output when allowing stop)
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
formatCheckpointResult(result);
|
|
155
|
+
if (!result.ok) {
|
|
156
|
+
process.exit(EXIT_CODES.ERROR);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
// Handle RUNNING_FROM_SHADOW gracefully - skip with warning instead of erroring
|
|
162
|
+
// This happens when the stop hook runs while cwd is inside .kspec/ directory
|
|
163
|
+
if (err instanceof ShadowError && err.code === "RUNNING_FROM_SHADOW") {
|
|
164
|
+
if (!isJsonMode()) {
|
|
165
|
+
console.log(chalk.yellow("[kspec] Session checkpoint skipped - running from inside .kspec/ directory"));
|
|
166
|
+
}
|
|
167
|
+
// Allow stop to proceed (exit successfully, no JSON output blocks the stop)
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
error(errors.failures.runCheckpoint, err);
|
|
171
|
+
process.exit(EXIT_CODES.ERROR);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ─── Command Registration ───────────────────────────────────────────────────
|
|
175
|
+
/**
|
|
176
|
+
* Register the 'session' command group and aliases
|
|
177
|
+
*/
|
|
178
|
+
export function registerSessionCommands(program) {
|
|
179
|
+
const session = program
|
|
180
|
+
.command("session")
|
|
181
|
+
.description("Session management and context");
|
|
182
|
+
// Session create subcommand
|
|
183
|
+
markMutating(session.command("create"))
|
|
184
|
+
.description("Create a new kspec session with optional budget")
|
|
185
|
+
.option("--agent-type <type>", "Agent type (e.g., claude-code, codex-cli)", "claude-code")
|
|
186
|
+
.option("--budget <n>", "Maximum tasks per cycle (positive integer)")
|
|
187
|
+
.option("--inject", "Inject KSPEC_SESSION_ID into agent environment")
|
|
188
|
+
.option("--task-id <id>", "Optional task ID being worked on")
|
|
189
|
+
.action(sessionCreateAction);
|
|
190
|
+
session
|
|
191
|
+
.command("start")
|
|
192
|
+
.alias("resume")
|
|
193
|
+
.description("Surface relevant context for starting a new working session")
|
|
194
|
+
.option("--brief", "Compact summary (default)")
|
|
195
|
+
.option("--full", "Comprehensive context dump")
|
|
196
|
+
.option("--since <time>", "Filter by recency (ISO8601 or relative: 1h, 2d, 1w)")
|
|
197
|
+
.option("--no-git", "Skip git commit information")
|
|
198
|
+
.option("-n, --limit <n>", "Limit items per section", "10")
|
|
199
|
+
.action(sessionStartAction);
|
|
200
|
+
// Session log subcommand group
|
|
201
|
+
const log = session
|
|
202
|
+
.command("log")
|
|
203
|
+
.description("Session log analysis commands");
|
|
204
|
+
log
|
|
205
|
+
.command("list")
|
|
206
|
+
.description("List session logs with summary statistics")
|
|
207
|
+
.option("-s, --status <status>", "Filter by status (active, completed, abandoned)")
|
|
208
|
+
.option("--agent <type>", "Filter by agent type")
|
|
209
|
+
.option("--since <time>", "Only show sessions started after this time (ISO8601 or relative: 1h, 2d, 1w)")
|
|
210
|
+
.option("--sort <field>", "Sort by field (started_at, duration, events, iterations, tasks_completed)", "started_at")
|
|
211
|
+
.option("--count", "Show only the count of matching sessions")
|
|
212
|
+
.option("-n, --limit <n>", "Limit number of sessions shown")
|
|
213
|
+
.action(sessionLogListAction);
|
|
214
|
+
log
|
|
215
|
+
.command("show <session-id>")
|
|
216
|
+
.description("Show detailed view of a single session")
|
|
217
|
+
.option("-e, --events", "Include chronological event timeline")
|
|
218
|
+
.option("-t, --type <type>", "Filter events by type (e.g., tool.call)")
|
|
219
|
+
.option("-n, --limit <n>", "Show only the last N events")
|
|
220
|
+
.option("-c, --context <n>", "Show context snapshot for iteration N")
|
|
221
|
+
.action(sessionLogShowAction);
|
|
222
|
+
log
|
|
223
|
+
.command("stats")
|
|
224
|
+
.description("Aggregate analytics across sessions")
|
|
225
|
+
.option("--since <time>", "Only include sessions started after this time (ISO8601 or relative: 1h, 2d, 1w)")
|
|
226
|
+
.option("--agent <type>", "Only include sessions with this agent type")
|
|
227
|
+
.option("--tool-usage", "Display top 10 tool calls by frequency")
|
|
228
|
+
.option("--by-day", "Group stats by day")
|
|
229
|
+
.option("--by-week", "Group stats by week")
|
|
230
|
+
.action(sessionLogStatsAction);
|
|
231
|
+
log
|
|
232
|
+
.command("search <pattern>")
|
|
233
|
+
.description("Search across session events by content")
|
|
234
|
+
.option("-t, --type <type>", "Only search events of this type (e.g., session.update)")
|
|
235
|
+
.option("--since <time>", "Only search sessions started after this time (ISO8601 or relative: 1h, 2d, 1w)")
|
|
236
|
+
.option("--agent <type>", "Only search sessions with this agent type")
|
|
237
|
+
.option("-n, --limit <n>", "Maximum matches to return (default: 50)")
|
|
238
|
+
.action(sessionLogSearchAction);
|
|
239
|
+
session
|
|
240
|
+
.command("checkpoint")
|
|
241
|
+
.description("Pre-stop hook: check for uncommitted work before ending session")
|
|
242
|
+
.option("--force", "Allow session end regardless of issues")
|
|
243
|
+
.action(sessionCheckpointAction);
|
|
244
|
+
session
|
|
245
|
+
.command("prompt-check")
|
|
246
|
+
.description("UserPromptSubmit hook: inject spec-first reminder")
|
|
247
|
+
.action(sessionPromptCheckAction);
|
|
248
|
+
// Top-level alias: kspec context
|
|
249
|
+
program
|
|
250
|
+
.command("context")
|
|
251
|
+
.description("Alias for session start - surface session context")
|
|
252
|
+
.option("--brief", "Compact summary (default)")
|
|
253
|
+
.option("--full", "Comprehensive context dump")
|
|
254
|
+
.option("--since <time>", "Filter by recency (ISO8601 or relative: 1h, 2d, 1w)")
|
|
255
|
+
.option("--no-git", "Skip git commit information")
|
|
256
|
+
.option("-n, --limit <n>", "Limit items per section", "10")
|
|
257
|
+
.action(sessionStartAction);
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/cli/commands/session/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session context data gathering.
|
|
3
|
+
*
|
|
4
|
+
* Loads and aggregates all data needed for session start output.
|
|
5
|
+
*/
|
|
6
|
+
import { type KspecContext } from "../../../parser/index.js";
|
|
7
|
+
import type { IterationStats, SessionStartContext, SessionOptions } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Gather session context data
|
|
10
|
+
*/
|
|
11
|
+
export declare function gatherSessionContext(ctx: KspecContext, options: SessionOptions): Promise<SessionStartContext>;
|
|
12
|
+
/**
|
|
13
|
+
* Get iteration stats - tasks completed/started since a given time.
|
|
14
|
+
* AC: @ralph-task-limit ac-detection
|
|
15
|
+
*/
|
|
16
|
+
export declare function getIterationStats(ctx: KspecContext, since: Date): Promise<IterationStats>;
|
|
17
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,YAAY,EAQlB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAQV,cAAc,EAId,mBAAmB,EAEnB,cAAc,EAGf,MAAM,YAAY,CAAC;AAwRpB;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA2S9B;AAID;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,IAAI,GACV,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
|