@specship/specship-win32-arm64 0.16.0 → 0.18.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/lib/dist/activation/steering.d.ts +11 -2
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +26 -9
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/bin/specship.js +34 -2
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/learn.md +45 -0
- package/lib/dist/config/runtime-settings.d.ts +25 -0
- package/lib/dist/config/runtime-settings.d.ts.map +1 -0
- package/lib/dist/config/runtime-settings.js +99 -0
- package/lib/dist/config/runtime-settings.js.map +1 -0
- package/lib/dist/index.d.ts +9 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +8 -0
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.js +1 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +7 -6
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/mcp/model-context.d.ts +5 -3
- package/lib/dist/mcp/model-context.d.ts.map +1 -1
- package/lib/dist/mcp/model-context.js +17 -8
- package/lib/dist/mcp/model-context.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +1 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +13 -0
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +30 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +151 -11
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/reflect/index.d.ts +3 -1
- package/lib/dist/reflect/index.d.ts.map +1 -1
- package/lib/dist/reflect/index.js +5 -1
- package/lib/dist/reflect/index.js.map +1 -1
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +130 -5
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/reflect/session-outcomes.d.ts +50 -0
- package/lib/dist/reflect/session-outcomes.d.ts.map +1 -0
- package/lib/dist/reflect/session-outcomes.js +110 -0
- package/lib/dist/reflect/session-outcomes.js.map +1 -0
- package/lib/dist/reflect/sweep.d.ts +11 -0
- package/lib/dist/reflect/sweep.d.ts.map +1 -1
- package/lib/dist/reflect/sweep.js +29 -0
- package/lib/dist/reflect/sweep.js.map +1 -1
- package/lib/dist/server/routes/claude.js +27 -0
- package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +197 -0
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
|
@@ -35,6 +35,8 @@ const THRESHOLDS = {
|
|
|
35
35
|
heavyOutputBytes: 50000, // R9: a Bash call whose result exceeds N "tokens"
|
|
36
36
|
heavyOutputMin: 2, // R9: …seen ≥N times
|
|
37
37
|
refDocSessions: 3, // R10: a doc file Read across ≥N distinct sessions
|
|
38
|
+
recipeMinSteps: 5, // R11: completed workflow run with ≥N finished steps (LEARN-DOC)
|
|
39
|
+
workaroundSessions: 2, // R12: the corrected command form recurs in ≥N sessions (LEARN-DOC)
|
|
38
40
|
};
|
|
39
41
|
/** Per-rule cap so a noisy corpus can't flood the Improvements list. */
|
|
40
42
|
const PER_RULE_LIMIT = 5;
|
|
@@ -87,6 +89,10 @@ function mineProposals(db, ctx) {
|
|
|
87
89
|
out.push(...ruleSpecshipCold(db, ctx, forms));
|
|
88
90
|
out.push(...ruleHeavyOutput(db, ctx, forms));
|
|
89
91
|
out.push(...ruleReferenceDoc(db, ctx, forms));
|
|
92
|
+
// Round 4 — SUCCESS crystallization (LEARN-DOC, REQ-LEARN-001): mine what
|
|
93
|
+
// WORKED, not only what wasted. Same human-gated proposal pipeline.
|
|
94
|
+
out.push(...ruleCompletedRunRecipe(db, ctx));
|
|
95
|
+
out.push(...ruleErrorWorkaround(db, ctx, forms));
|
|
90
96
|
return out;
|
|
91
97
|
}
|
|
92
98
|
/**
|
|
@@ -242,6 +248,112 @@ function ruleRepeatedCommands(db, ctx, forms) {
|
|
|
242
248
|
},
|
|
243
249
|
}));
|
|
244
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* R11 → skill: a workflow run that COMPLETED with ≥5 finished steps is a
|
|
253
|
+
* proven recipe (LEARN-DOC, REQ-LEARN-001.A1) — crystallize it so the next
|
|
254
|
+
* same-shaped task starts from the routine instead of rediscovering it.
|
|
255
|
+
* Success signal is the run's own recorded status; nothing is inferred from
|
|
256
|
+
* transcript data that can't prove it. workflow_runs is project-local (it
|
|
257
|
+
* lives in this project's DB), so no cross-project predicate is needed.
|
|
258
|
+
*/
|
|
259
|
+
function ruleCompletedRunRecipe(db, ctx) {
|
|
260
|
+
if (!tableExists(db, 'workflow_runs'))
|
|
261
|
+
return [];
|
|
262
|
+
const rows = db
|
|
263
|
+
.prepare(`SELECT id, workflow_name, inputs, metadata FROM workflow_runs
|
|
264
|
+
WHERE status = 'completed'
|
|
265
|
+
ORDER BY completed_at DESC
|
|
266
|
+
LIMIT 20`)
|
|
267
|
+
.all();
|
|
268
|
+
const out = [];
|
|
269
|
+
for (const r of rows) {
|
|
270
|
+
let steps = [];
|
|
271
|
+
let inputs = {};
|
|
272
|
+
try {
|
|
273
|
+
steps = JSON.parse(r.metadata ?? '{}').completedNodes ?? [];
|
|
274
|
+
}
|
|
275
|
+
catch { /* unparseable metadata — skip */ }
|
|
276
|
+
try {
|
|
277
|
+
inputs = JSON.parse(r.inputs ?? '{}');
|
|
278
|
+
}
|
|
279
|
+
catch { /* unparseable inputs — skip */ }
|
|
280
|
+
if (steps.length < THRESHOLDS.recipeMinSteps)
|
|
281
|
+
continue;
|
|
282
|
+
const inputKeys = Object.keys(inputs);
|
|
283
|
+
out.push((0, targets_1.buildProposal)(ctx, {
|
|
284
|
+
type: 'skill',
|
|
285
|
+
severity: 'info',
|
|
286
|
+
nameSeed: `recipe-${r.workflow_name}`,
|
|
287
|
+
title: `Crystallize the completed ${r.workflow_name} run as a recipe`,
|
|
288
|
+
body: `Run ${r.id.slice(0, 8)} completed all ${steps.length} steps. Capturing the routine makes the next same-shaped task start from a proven recipe.`,
|
|
289
|
+
content: `Proven recipe from a completed run of \`${r.workflow_name}\`` +
|
|
290
|
+
(inputKeys.length ? ` (inputs: ${inputKeys.join(', ')})` : '') +
|
|
291
|
+
`:\n\n` +
|
|
292
|
+
steps.map((st, i) => `${i + 1}. ${st}`).join('\n') +
|
|
293
|
+
`\n\nRe-run the routine with: \`specship workflow run ${r.workflow_name}${inputKeys.map((k) => ` -i ${k}=<value>`).join('')}\``,
|
|
294
|
+
evidence: {
|
|
295
|
+
sessions: [],
|
|
296
|
+
prompts: [],
|
|
297
|
+
detail: `workflow_runs ${r.id}: ${r.workflow_name} completed, ${steps.length} steps`,
|
|
298
|
+
},
|
|
299
|
+
}));
|
|
300
|
+
if (out.length >= PER_RULE_LIMIT)
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
return out;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* R12 → memory_rule: error→workaround pair (LEARN-DOC, REQ-LEARN-001.A2).
|
|
307
|
+
* Transcripts carry no exit codes, so "failing-shaped" is structural: within
|
|
308
|
+
* a session, the SAME first token re-run as a DIFFERENT full command in the
|
|
309
|
+
* next Bash call, where the later variant then recurs (normalized) across
|
|
310
|
+
* ≥2 distinct sessions — the working form the agent converged on.
|
|
311
|
+
* Conservative by design; the threshold is spec-flagged for tuning.
|
|
312
|
+
*/
|
|
313
|
+
function ruleErrorWorkaround(db, ctx, forms) {
|
|
314
|
+
const rows = db
|
|
315
|
+
.prepare(`SELECT session_id, input_summary AS cmd, ts FROM claude_tool_calls
|
|
316
|
+
WHERE tool_name = 'Bash' AND input_summary != '' AND ${IN_PROJECT}
|
|
317
|
+
ORDER BY session_id, ts ASC
|
|
318
|
+
LIMIT 8000`)
|
|
319
|
+
.all(...forms);
|
|
320
|
+
// Consecutive same-first-token, different-command pairs → candidate
|
|
321
|
+
// workarounds (the LATER command is the form that stuck).
|
|
322
|
+
const candidates = new Map();
|
|
323
|
+
for (let i = 1; i < rows.length; i++) {
|
|
324
|
+
const prev = rows[i - 1];
|
|
325
|
+
const cur = rows[i];
|
|
326
|
+
if (prev.session_id !== cur.session_id)
|
|
327
|
+
continue;
|
|
328
|
+
const tok = (c) => c.trim().split(/\s+/)[0] ?? '';
|
|
329
|
+
if (!tok(prev.cmd) || tok(prev.cmd) !== tok(cur.cmd))
|
|
330
|
+
continue;
|
|
331
|
+
if (prev.cmd.trim() === cur.cmd.trim())
|
|
332
|
+
continue;
|
|
333
|
+
const key = cur.cmd.replace(/\s+/g, ' ').trim();
|
|
334
|
+
const c = candidates.get(key) ?? { sample: cur.cmd.trim(), sessions: new Set() };
|
|
335
|
+
c.sessions.add(cur.session_id);
|
|
336
|
+
candidates.set(key, c);
|
|
337
|
+
}
|
|
338
|
+
return [...candidates.values()]
|
|
339
|
+
.filter((c) => c.sessions.size >= THRESHOLDS.workaroundSessions)
|
|
340
|
+
.sort((a, b) => b.sessions.size - a.sessions.size)
|
|
341
|
+
.slice(0, PER_RULE_LIMIT)
|
|
342
|
+
.map((c) => (0, targets_1.buildProposal)(ctx, {
|
|
343
|
+
type: 'memory_rule',
|
|
344
|
+
scope: 'project',
|
|
345
|
+
severity: 'info',
|
|
346
|
+
nameSeed: `workaround-${c.sample}`,
|
|
347
|
+
title: `Working form: \`${truncate(c.sample, 44)}\``,
|
|
348
|
+
body: `An initial variant of this command was immediately re-run in this altered form, and the altered form recurs across ${c.sessions.size} sessions — it looks like the form that works here.`,
|
|
349
|
+
content: `In this project, use \`${c.sample}\` directly (an earlier variant of this command consistently gets corrected to this form).`,
|
|
350
|
+
evidence: {
|
|
351
|
+
sessions: [...c.sessions].slice(0, 8),
|
|
352
|
+
prompts: [],
|
|
353
|
+
detail: `same-first-token retry converging on this form across ${c.sessions.size} sessions`,
|
|
354
|
+
},
|
|
355
|
+
}));
|
|
356
|
+
}
|
|
245
357
|
/** Destructive shell-operation categories the agent should treat with care. */
|
|
246
358
|
const DESTRUCTIVE = [
|
|
247
359
|
{ key: 'rm-rf', label: 'recursive force-delete (`rm -rf`)', re: /\brm\s+-[a-z]*r[a-z]*f[a-z]*\b|\brm\s+-[a-z]*f[a-z]*r[a-z]*\b/i },
|
|
@@ -336,22 +448,34 @@ const CORRECTION_CUE = /^(no\b|don'?t\b|do not\b|never\b|always\b|stop\b|instead
|
|
|
336
448
|
*/
|
|
337
449
|
function ruleRecurringCorrection(db, ctx, forms) {
|
|
338
450
|
const rows = db
|
|
339
|
-
.prepare(`SELECT id, text FROM claude_prompts
|
|
451
|
+
.prepare(`SELECT id, session_id, ts, text FROM claude_prompts
|
|
340
452
|
WHERE text IS NOT NULL AND length(text) BETWEEN 12 AND 200
|
|
341
453
|
AND text NOT LIKE '<%' AND text NOT LIKE '%<command-name>%'
|
|
342
454
|
AND is_sidechain = 0
|
|
343
455
|
AND ${IN_PROJECT}
|
|
344
|
-
ORDER BY ts
|
|
456
|
+
ORDER BY session_id, ts ASC
|
|
345
457
|
LIMIT 4000`)
|
|
346
458
|
.all(...forms);
|
|
347
459
|
const groups = new Map();
|
|
460
|
+
let prevInSession = null;
|
|
348
461
|
for (const r of rows) {
|
|
349
462
|
const trimmed = r.text.trim();
|
|
350
|
-
|
|
463
|
+
const isCorrection = CORRECTION_CUE.test(trimmed);
|
|
464
|
+
if (!isCorrection) {
|
|
465
|
+
prevInSession = { session: r.session_id, text: trimmed };
|
|
351
466
|
continue;
|
|
467
|
+
}
|
|
468
|
+
// Corrected-approach context (LEARN-DOC, REQ-LEARN-001): the prompt the
|
|
469
|
+
// correction FOLLOWED tells us what was being done wrong — capturing it
|
|
470
|
+
// turns "stop doing X" into "when doing Y, do X-the-right-way".
|
|
471
|
+
const context = prevInSession && prevInSession.session === r.session_id
|
|
472
|
+
? prevInSession.text.split('\n')[0].slice(0, 80)
|
|
473
|
+
: '';
|
|
352
474
|
const key = trimmed.replace(/\s+/g, ' ').toLowerCase();
|
|
353
|
-
const g = groups.get(key) ?? { count: 0, prompts: [], sample: trimmed };
|
|
475
|
+
const g = groups.get(key) ?? { count: 0, prompts: [], sample: trimmed, context };
|
|
354
476
|
g.count++;
|
|
477
|
+
if (!g.context && context)
|
|
478
|
+
g.context = context;
|
|
355
479
|
if (g.prompts.length < 8)
|
|
356
480
|
g.prompts.push(r.id);
|
|
357
481
|
groups.set(key, g);
|
|
@@ -367,7 +491,8 @@ function ruleRecurringCorrection(db, ctx, forms) {
|
|
|
367
491
|
nameSeed: `correction-${g.sample}`,
|
|
368
492
|
title: `Recurring correction: "${truncate(g.sample, 48)}"`,
|
|
369
493
|
body: `You've given this correction ${g.count} times. Recording it as a durable preference means you shouldn't have to repeat it.`,
|
|
370
|
-
content: `Standing user preference (you have repeated this):
|
|
494
|
+
content: (g.context ? `When doing work like "${g.context}": ` : 'Standing user preference (you have repeated this): ') +
|
|
495
|
+
g.sample,
|
|
371
496
|
evidence: {
|
|
372
497
|
sessions: [],
|
|
373
498
|
prompts: g.prompts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miner.js","sourceRoot":"","sources":["../../src/reflect/miner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"miner.js","sourceRoot":"","sources":["../../src/reflect/miner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic session outcome records (LEARN-DOC, REQ-LEARN-004) — tier 3
|
|
3
|
+
* of SpecShip's memory made recallable.
|
|
4
|
+
*
|
|
5
|
+
* Everything here is a computed join over rows the ingest already writes
|
|
6
|
+
* (`claude_*`) plus `workflow_runs` — no LLM summarization, no new write
|
|
7
|
+
* path, and no claims the data can't prove: transcripts carry tool-call
|
|
8
|
+
* metadata and result LENGTH (never exit codes), so test outcomes appear
|
|
9
|
+
* only via a workflow run's own recorded status.
|
|
10
|
+
*/
|
|
11
|
+
import type { SqliteDatabase } from '../db/sqlite-adapter';
|
|
12
|
+
export interface SessionOutcome {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
startedAt: number | null;
|
|
15
|
+
/** First line of the session's opening prompt (trimmed, capped). */
|
|
16
|
+
firstPrompt: string;
|
|
17
|
+
/** Distinct files the agent edited (Edit/Write targets). */
|
|
18
|
+
filesEdited: string[];
|
|
19
|
+
/** Total shell commands run. */
|
|
20
|
+
commandsRun: number;
|
|
21
|
+
/** Total specship tool calls. */
|
|
22
|
+
specshipCalls: number;
|
|
23
|
+
/** specship_link_assert calls — spec links asserted in-session. */
|
|
24
|
+
linksAsserted: number;
|
|
25
|
+
/**
|
|
26
|
+
* Workflow runs whose lifetime overlaps the session window. workflow_runs
|
|
27
|
+
* carries no session id, so this is a deterministic time-overlap join —
|
|
28
|
+
* labeled as such wherever rendered.
|
|
29
|
+
*/
|
|
30
|
+
workflowRuns: Array<{
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
status: string;
|
|
34
|
+
}>;
|
|
35
|
+
costUsd: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Sessions (this project only, both path forms) that EDITED any of the given
|
|
39
|
+
* files, newest first. `excludeActiveWithinMs` drops sessions still active
|
|
40
|
+
* recently — the current session is in these tables too (ingest is live) and
|
|
41
|
+
* "prior work: two minutes ago" is noise, not recall.
|
|
42
|
+
*/
|
|
43
|
+
export declare function sessionsTouchingFiles(db: SqliteDatabase, projectForms: [string, string], filePaths: string[], opts?: {
|
|
44
|
+
limit?: number;
|
|
45
|
+
excludeActiveWithinMs?: number;
|
|
46
|
+
now?: number;
|
|
47
|
+
}): string[];
|
|
48
|
+
/** Resolve one session's outcome record. Null when the session is unknown. */
|
|
49
|
+
export declare function sessionOutcome(db: SqliteDatabase, sessionId: string): SessionOutcome | null;
|
|
50
|
+
//# sourceMappingURL=session-outcomes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-outcomes.d.ts","sourceRoot":"","sources":["../../src/reflect/session-outcomes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1E,MAAM,EAAE,CA8BV;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA6D3F"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic session outcome records (LEARN-DOC, REQ-LEARN-004) — tier 3
|
|
4
|
+
* of SpecShip's memory made recallable.
|
|
5
|
+
*
|
|
6
|
+
* Everything here is a computed join over rows the ingest already writes
|
|
7
|
+
* (`claude_*`) plus `workflow_runs` — no LLM summarization, no new write
|
|
8
|
+
* path, and no claims the data can't prove: transcripts carry tool-call
|
|
9
|
+
* metadata and result LENGTH (never exit codes), so test outcomes appear
|
|
10
|
+
* only via a workflow run's own recorded status.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.sessionsTouchingFiles = sessionsTouchingFiles;
|
|
14
|
+
exports.sessionOutcome = sessionOutcome;
|
|
15
|
+
function tableExists(db, name) {
|
|
16
|
+
try {
|
|
17
|
+
return !!db
|
|
18
|
+
.prepare(`SELECT 1 AS x FROM sqlite_master WHERE type='table' AND name=?`)
|
|
19
|
+
.get(name);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sessions (this project only, both path forms) that EDITED any of the given
|
|
27
|
+
* files, newest first. `excludeActiveWithinMs` drops sessions still active
|
|
28
|
+
* recently — the current session is in these tables too (ingest is live) and
|
|
29
|
+
* "prior work: two minutes ago" is noise, not recall.
|
|
30
|
+
*/
|
|
31
|
+
function sessionsTouchingFiles(db, projectForms, filePaths, opts = {}) {
|
|
32
|
+
if (filePaths.length === 0)
|
|
33
|
+
return [];
|
|
34
|
+
if (!tableExists(db, 'claude_tool_calls') || !tableExists(db, 'claude_sessions'))
|
|
35
|
+
return [];
|
|
36
|
+
const limit = opts.limit ?? 3;
|
|
37
|
+
const quiet = opts.excludeActiveWithinMs ?? 30 * 60_000;
|
|
38
|
+
const now = opts.now ?? Date.now();
|
|
39
|
+
// Edit/Write input_summary IS the file path (summarizeToolInput). Match on
|
|
40
|
+
// path suffix so absolute vs project-relative storage both hit.
|
|
41
|
+
const caps = filePaths.slice(0, 12);
|
|
42
|
+
const suffixClauses = caps.map(() => `t.input_summary LIKE ?`).join(' OR ');
|
|
43
|
+
const params = [...projectForms, ...caps.map((p) => `%${p}`), now - quiet, limit];
|
|
44
|
+
try {
|
|
45
|
+
const rows = db
|
|
46
|
+
.prepare(`SELECT s.id, MAX(s.started_at) AS started
|
|
47
|
+
FROM claude_tool_calls t
|
|
48
|
+
JOIN claude_sessions s ON s.id = t.session_id
|
|
49
|
+
WHERE t.tool_name IN ('Edit','Write')
|
|
50
|
+
AND s.project_path IN (?, ?)
|
|
51
|
+
AND (${suffixClauses})
|
|
52
|
+
AND COALESCE(s.ended_at, s.started_at, 0) < ?
|
|
53
|
+
GROUP BY s.id
|
|
54
|
+
ORDER BY started DESC
|
|
55
|
+
LIMIT ?`)
|
|
56
|
+
.all(...params);
|
|
57
|
+
return rows.map((r) => r.id);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Resolve one session's outcome record. Null when the session is unknown. */
|
|
64
|
+
function sessionOutcome(db, sessionId) {
|
|
65
|
+
if (!tableExists(db, 'claude_sessions'))
|
|
66
|
+
return null;
|
|
67
|
+
const s = db
|
|
68
|
+
.prepare(`SELECT id, started_at, ended_at, total_cost_usd FROM claude_sessions WHERE id = ?`)
|
|
69
|
+
.get(sessionId);
|
|
70
|
+
if (!s)
|
|
71
|
+
return null;
|
|
72
|
+
const firstPromptRow = db
|
|
73
|
+
.prepare(`SELECT text FROM claude_prompts
|
|
74
|
+
WHERE session_id = ? AND text IS NOT NULL AND text NOT LIKE '<%'
|
|
75
|
+
ORDER BY ts ASC LIMIT 1`)
|
|
76
|
+
.get(sessionId);
|
|
77
|
+
const firstPrompt = (firstPromptRow?.text ?? '').split('\n')[0]?.trim().slice(0, 100) ?? '';
|
|
78
|
+
const filesEdited = db
|
|
79
|
+
.prepare(`SELECT DISTINCT input_summary AS f FROM claude_tool_calls
|
|
80
|
+
WHERE session_id = ? AND tool_name IN ('Edit','Write') AND input_summary != ''
|
|
81
|
+
ORDER BY f LIMIT 40`)
|
|
82
|
+
.all(sessionId).map((r) => r.f);
|
|
83
|
+
const count = (sql) => (db.prepare(sql).get(sessionId)?.n ?? 0);
|
|
84
|
+
const commandsRun = count(`SELECT COUNT(*) AS n FROM claude_tool_calls WHERE session_id = ? AND tool_name = 'Bash'`);
|
|
85
|
+
const specshipCalls = count(`SELECT COUNT(*) AS n FROM claude_tool_calls WHERE session_id = ? AND is_specship = 1`);
|
|
86
|
+
const linksAsserted = count(`SELECT COUNT(*) AS n FROM claude_tool_calls WHERE session_id = ? AND tool_name LIKE '%specship_link_assert'`);
|
|
87
|
+
// Time-overlap join to workflow runs (no session FK exists — deterministic
|
|
88
|
+
// heuristic, always labeled as in-window when rendered).
|
|
89
|
+
let workflowRuns = [];
|
|
90
|
+
if (tableExists(db, 'workflow_runs') && s.started_at) {
|
|
91
|
+
const end = s.ended_at ?? Date.now();
|
|
92
|
+
workflowRuns = db
|
|
93
|
+
.prepare(`SELECT id, workflow_name AS name, status FROM workflow_runs
|
|
94
|
+
WHERE created_at <= ? AND COALESCE(completed_at, last_activity_at) >= ?
|
|
95
|
+
ORDER BY created_at DESC LIMIT 5`)
|
|
96
|
+
.all(end, s.started_at);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
sessionId: s.id,
|
|
100
|
+
startedAt: s.started_at,
|
|
101
|
+
firstPrompt,
|
|
102
|
+
filesEdited,
|
|
103
|
+
commandsRun,
|
|
104
|
+
specshipCalls,
|
|
105
|
+
linksAsserted,
|
|
106
|
+
workflowRuns,
|
|
107
|
+
costUsd: s.total_cost_usd ?? 0,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=session-outcomes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-outcomes.js","sourceRoot":"","sources":["../../src/reflect/session-outcomes.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,4 +23,15 @@ export interface SweepResult extends AnalyzeResult {
|
|
|
23
23
|
}
|
|
24
24
|
export declare function analyze(db: SqliteDatabase, ctx: ReflectContext, now?: () => number): AnalyzeResult;
|
|
25
25
|
export declare function sweep(db: SqliteDatabase, ctx: ReflectContext, now?: () => number): SweepResult;
|
|
26
|
+
/**
|
|
27
|
+
* Explicit capture (LEARN-DOC, REQ-LEARN-002): crystallize a workflow the
|
|
28
|
+
* user/agent just performed into a `skill` proposal ON DEMAND — same store,
|
|
29
|
+
* same content-hash convergence, same human gate as mined proposals. The
|
|
30
|
+
* evidence detail marks the explicit provenance so the Improvements surface
|
|
31
|
+
* can distinguish "you asked for this" from "the miner found this".
|
|
32
|
+
*/
|
|
33
|
+
export declare function capture(db: SqliteDatabase, ctx: ReflectContext, input: {
|
|
34
|
+
title: string;
|
|
35
|
+
content: string;
|
|
36
|
+
}, now?: () => number): Proposal;
|
|
26
37
|
//# sourceMappingURL=sweep.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep.d.ts","sourceRoot":"","sources":["../../src/reflect/sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sweep.d.ts","sourceRoot":"","sources":["../../src/reflect/sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,oFAAoF;IACpF,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,gFAAgF;IAChF,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,wBAAgB,OAAO,CACrB,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,cAAc,EACnB,GAAG,GAAE,MAAM,MAAyB,GACnC,aAAa,CAKf;AAED,wBAAgB,KAAK,CACnB,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,cAAc,EACnB,GAAG,GAAE,MAAM,MAAyB,GACnC,WAAW,CAgBb;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACzC,GAAG,GAAE,MAAM,MAAyB,GACnC,QAAQ,CAmBV"}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.analyze = analyze;
|
|
15
15
|
exports.sweep = sweep;
|
|
16
|
+
exports.capture = capture;
|
|
16
17
|
const miner_1 = require("./miner");
|
|
18
|
+
const targets_1 = require("./targets");
|
|
17
19
|
const store_1 = require("./store");
|
|
18
20
|
function analyze(db, ctx, now = () => Date.now()) {
|
|
19
21
|
const store = new store_1.ReflectStore(db, now);
|
|
@@ -39,4 +41,31 @@ function sweep(db, ctx, now = () => Date.now()) {
|
|
|
39
41
|
}
|
|
40
42
|
return { open: store.list('open'), empty: mined.length === 0, notify };
|
|
41
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Explicit capture (LEARN-DOC, REQ-LEARN-002): crystallize a workflow the
|
|
46
|
+
* user/agent just performed into a `skill` proposal ON DEMAND — same store,
|
|
47
|
+
* same content-hash convergence, same human gate as mined proposals. The
|
|
48
|
+
* evidence detail marks the explicit provenance so the Improvements surface
|
|
49
|
+
* can distinguish "you asked for this" from "the miner found this".
|
|
50
|
+
*/
|
|
51
|
+
function capture(db, ctx, input, now = () => Date.now()) {
|
|
52
|
+
const store = new store_1.ReflectStore(db, now);
|
|
53
|
+
const title = input.title.trim();
|
|
54
|
+
const proposal = (0, targets_1.buildProposal)(ctx, {
|
|
55
|
+
type: 'skill',
|
|
56
|
+
severity: 'info',
|
|
57
|
+
nameSeed: `learn-${title}`,
|
|
58
|
+
title: `Captured routine: ${title}`,
|
|
59
|
+
body: 'Explicitly captured via /specship:learn — a distilled routine from a real session, awaiting your review.',
|
|
60
|
+
content: input.content.trim(),
|
|
61
|
+
evidence: {
|
|
62
|
+
sessions: [],
|
|
63
|
+
prompts: [],
|
|
64
|
+
detail: 'explicitly captured (/specship:learn)',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
store.upsertMined([proposal]);
|
|
68
|
+
// Return the stored row (state may differ if it already existed).
|
|
69
|
+
return store.list().find((p) => p.contentHash === proposal.contentHash) ?? proposal;
|
|
70
|
+
}
|
|
42
71
|
//# sourceMappingURL=sweep.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../src/reflect/sweep.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;
|
|
1
|
+
{"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../src/reflect/sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -999,6 +999,33 @@ export async function registerClaudeRoutes(app) {
|
|
|
999
999
|
saving: '~$X.XX / session (model-dependent)',
|
|
1000
1000
|
});
|
|
1001
1001
|
}
|
|
1002
|
+
// Rule 4: small-model flounder → escalate (MIXMODEL-DOC, REQ-MIX-002).
|
|
1003
|
+
// A haiku/sonnet session drowning in file Reads is the re-read spiral —
|
|
1004
|
+
// the task shape wants a bigger model, or the same work packaged as the
|
|
1005
|
+
// mixed-model workflow (fresh context per step + external verification).
|
|
1006
|
+
const flounder = db.prepare(`
|
|
1007
|
+
SELECT s.id, s.last_model,
|
|
1008
|
+
(SELECT COUNT(*) FROM claude_tool_calls t WHERE t.session_id = s.id AND t.tool_name = 'Read') AS reads
|
|
1009
|
+
FROM claude_sessions s
|
|
1010
|
+
WHERE s.project_path IN (?, ?)
|
|
1011
|
+
AND (LOWER(COALESCE(s.last_model,'')) LIKE '%haiku%' OR LOWER(COALESCE(s.last_model,'')) LIKE '%sonnet%')
|
|
1012
|
+
ORDER BY s.started_at DESC
|
|
1013
|
+
LIMIT 30
|
|
1014
|
+
`).all(realRoot, mangledRoot);
|
|
1015
|
+
for (const r of flounder) {
|
|
1016
|
+
if (r.reads < 15)
|
|
1017
|
+
continue;
|
|
1018
|
+
tips.push({
|
|
1019
|
+
id: 'model_escalation:' + r.id,
|
|
1020
|
+
severity: 'warn',
|
|
1021
|
+
icon: 'bot',
|
|
1022
|
+
title: `${r.reads} file Reads on a ${/haiku/i.test(r.last_model) ? 'Haiku' : 'Sonnet'} session — this task wants a bigger model or a workflow`,
|
|
1023
|
+
why: 'Small models flounder on plan-and-synthesize tasks: they re-read files instead of reasoning over them. Escalate the judgment, keep the typing cheap.',
|
|
1024
|
+
evidence: { session: r.id, detail: `${r.last_model}: ${r.reads} Read calls` },
|
|
1025
|
+
fix: 'specship workflow run spec-implement-mixed -i SPEC_ID=<id> # sonnet plans, haiku executes, tests verify',
|
|
1026
|
+
saving: 'flounder turns cost more than a bigger model',
|
|
1027
|
+
});
|
|
1028
|
+
}
|
|
1002
1029
|
// Sort: errors before warns before info, then within bucket by saving heuristic.
|
|
1003
1030
|
const order = { error: 0, warn: 1, info: 2 };
|
|
1004
1031
|
tips.sort((a, b) => (order[a.severity] ?? 9) - (order[b.severity] ?? 9));
|