@specship/specship-win32-arm64 0.11.9 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/bin/specship.js +9 -60
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/reflect/index.d.ts +1 -1
- package/lib/dist/reflect/index.d.ts.map +1 -1
- package/lib/dist/reflect/index.js +2 -1
- package/lib/dist/reflect/index.js.map +1 -1
- package/lib/dist/reflect/miner.d.ts +8 -0
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +64 -36
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/server/cli.js +5 -49
- package/lib/dist/server/routes/claude.js +13 -5
- package/lib/dist/server/server.js +17 -2
- package/lib/dist/server/ssr/md.mjs +83 -0
- package/lib/dist/server/ssr/render.mjs +564 -0
- package/lib/dist/server/ssr/routes.js +73 -0
- package/lib/dist/server/static-handler.js +30 -0
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +3 -3
- package/package.json +1 -1
- package/lib/dist/web/chunk-2AJCHB7P.js +0 -1
- package/lib/dist/web/chunk-2CPLUFCH.js +0 -2
- package/lib/dist/web/chunk-2I7L37NS.js +0 -1
- package/lib/dist/web/chunk-2IVSOVQZ.js +0 -1
- package/lib/dist/web/chunk-2NAWAJB5.js +0 -1
- package/lib/dist/web/chunk-2OJBIPE4.js +0 -1
- package/lib/dist/web/chunk-3E2WB6D5.js +0 -1
- package/lib/dist/web/chunk-3EBFYSCH.js +0 -2
- package/lib/dist/web/chunk-3QCQ4BXS.js +0 -1
- package/lib/dist/web/chunk-42XVAQ6I.js +0 -1
- package/lib/dist/web/chunk-4G7XU55L.js +0 -1
- package/lib/dist/web/chunk-4IMMPEYM.js +0 -1
- package/lib/dist/web/chunk-4TJQJPCZ.js +0 -1
- package/lib/dist/web/chunk-4WZIHTPC.js +0 -1
- package/lib/dist/web/chunk-4YVSYOSD.js +0 -1
- package/lib/dist/web/chunk-5BQIOYKW.js +0 -1
- package/lib/dist/web/chunk-5HGWHUJA.js +0 -1
- package/lib/dist/web/chunk-5NTGUSXJ.js +0 -1
- package/lib/dist/web/chunk-5Y244R4G.js +0 -1
- package/lib/dist/web/chunk-6RRDPT5Z.js +0 -1
- package/lib/dist/web/chunk-6VKB2ZWM.js +0 -1
- package/lib/dist/web/chunk-7656MA24.js +0 -1
- package/lib/dist/web/chunk-7DMFVTU4.js +0 -1
- package/lib/dist/web/chunk-7KWBINA7.js +0 -1
- package/lib/dist/web/chunk-7SMPKVEP.js +0 -1
- package/lib/dist/web/chunk-AHI5XEVX.js +0 -1
- package/lib/dist/web/chunk-AS2GV63A.js +0 -1
- package/lib/dist/web/chunk-AZJVTPLU.js +0 -1
- package/lib/dist/web/chunk-AZUUBUEJ.js +0 -1
- package/lib/dist/web/chunk-BLBRMCN2.js +0 -1
- package/lib/dist/web/chunk-BMIAXD2V.js +0 -2
- package/lib/dist/web/chunk-BPCJLNBS.js +0 -47
- package/lib/dist/web/chunk-BUXWEHIY.js +0 -1
- package/lib/dist/web/chunk-CGVC666W.js +0 -1
- package/lib/dist/web/chunk-DLQPZWSI.css +0 -1
- package/lib/dist/web/chunk-DOKZOFKM.js +0 -1
- package/lib/dist/web/chunk-DTWIJ3GJ.js +0 -1
- package/lib/dist/web/chunk-DYRFLPJA.js +0 -1
- package/lib/dist/web/chunk-E3J3CXR5.js +0 -1
- package/lib/dist/web/chunk-E73OX2P7.js +0 -1
- package/lib/dist/web/chunk-EAXRKDLV.js +0 -1
- package/lib/dist/web/chunk-EBKKDHYI.js +0 -1
- package/lib/dist/web/chunk-EE7V7Q5P.js +0 -1
- package/lib/dist/web/chunk-EKY2FUHU.js +0 -1
- package/lib/dist/web/chunk-EP6XOPXH.js +0 -1
- package/lib/dist/web/chunk-ESGDLJOJ.js +0 -1
- package/lib/dist/web/chunk-ETJG7NCY.js +0 -1
- package/lib/dist/web/chunk-EUUEFEDI.js +0 -1
- package/lib/dist/web/chunk-EXBUKHH2.js +0 -17
- package/lib/dist/web/chunk-FC3R7YHR.js +0 -4
- package/lib/dist/web/chunk-FGNZDHTL.js +0 -11
- package/lib/dist/web/chunk-FIJW2UNJ.js +0 -1
- package/lib/dist/web/chunk-FMV5PXRC.js +0 -5
- package/lib/dist/web/chunk-G7RXFHYO.js +0 -1
- package/lib/dist/web/chunk-G7VZT5KB.js +0 -3
- package/lib/dist/web/chunk-GRZYXPSO.js +0 -7
- package/lib/dist/web/chunk-GYGPS3AN.js +0 -1
- package/lib/dist/web/chunk-H7AF7YS4.js +0 -1
- package/lib/dist/web/chunk-HDZDQILN.js +0 -1
- package/lib/dist/web/chunk-HMK6UO6N.js +0 -1
- package/lib/dist/web/chunk-IHEE5NYJ.js +0 -1
- package/lib/dist/web/chunk-IOB4JJT4.js +0 -1
- package/lib/dist/web/chunk-ISNEBICW.js +0 -1
- package/lib/dist/web/chunk-J2GZVLHH.js +0 -1
- package/lib/dist/web/chunk-JGDK6YKG.js +0 -1
- package/lib/dist/web/chunk-JLOJCDIY.js +0 -1
- package/lib/dist/web/chunk-JTFXTIPE.js +0 -903
- package/lib/dist/web/chunk-K7UD24Z4.js +0 -1
- package/lib/dist/web/chunk-KYSTCHAH.js +0 -1
- package/lib/dist/web/chunk-LB6JPLX2.js +0 -1
- package/lib/dist/web/chunk-LNSVDHCI.js +0 -1
- package/lib/dist/web/chunk-LVGIY3SO.js +0 -1
- package/lib/dist/web/chunk-LXLHIHEN.js +0 -1
- package/lib/dist/web/chunk-M42QOYAE.js +0 -1
- package/lib/dist/web/chunk-ML5ULGHY.js +0 -1
- package/lib/dist/web/chunk-MNFTHCSJ.js +0 -1
- package/lib/dist/web/chunk-N6SS4G6S.js +0 -1
- package/lib/dist/web/chunk-NKPK3BR3.js +0 -1
- package/lib/dist/web/chunk-NTBJG6SJ.js +0 -1
- package/lib/dist/web/chunk-NUDB3Q2Y.js +0 -3
- package/lib/dist/web/chunk-OTQR5VFM.js +0 -1
- package/lib/dist/web/chunk-OXEF5E3E.js +0 -1
- package/lib/dist/web/chunk-P62EJGSF.js +0 -1
- package/lib/dist/web/chunk-PCW6R7OP.js +0 -1
- package/lib/dist/web/chunk-PGGJPDJG.js +0 -1
- package/lib/dist/web/chunk-POCVU4VK.js +0 -2
- package/lib/dist/web/chunk-PS6HRYQQ.js +0 -3
- package/lib/dist/web/chunk-PUYSJNJR.js +0 -1
- package/lib/dist/web/chunk-PZSU53SS.js +0 -1
- package/lib/dist/web/chunk-Q2RVFS45.js +0 -1
- package/lib/dist/web/chunk-Q7L6LLAK.js +0 -1
- package/lib/dist/web/chunk-QCMKJIWY.js +0 -1
- package/lib/dist/web/chunk-QH6CF3M3.js +0 -1
- package/lib/dist/web/chunk-QIZ65CGB.js +0 -1
- package/lib/dist/web/chunk-QPA2REUE.js +0 -1
- package/lib/dist/web/chunk-QQ5LD7PI.js +0 -1
- package/lib/dist/web/chunk-QR6L3KAC.js +0 -1
- package/lib/dist/web/chunk-R2DLK4HO.js +0 -1
- package/lib/dist/web/chunk-RD6TVPOT.js +0 -1
- package/lib/dist/web/chunk-RKY4EJYJ.js +0 -1
- package/lib/dist/web/chunk-RONYWVY7.js +0 -1
- package/lib/dist/web/chunk-RXKXYF2C.js +0 -1
- package/lib/dist/web/chunk-S5J5WQXB.js +0 -6
- package/lib/dist/web/chunk-SQPYSOV6.js +0 -1
- package/lib/dist/web/chunk-SWKJRNYY.js +0 -1
- package/lib/dist/web/chunk-SYGIPC2P.js +0 -4
- package/lib/dist/web/chunk-T7AZ65JP.js +0 -1
- package/lib/dist/web/chunk-TCZDVOHD.js +0 -1
- package/lib/dist/web/chunk-TPTITA3V.js +0 -1
- package/lib/dist/web/chunk-TR335633.js +0 -1
- package/lib/dist/web/chunk-TWVVIWKO.js +0 -1
- package/lib/dist/web/chunk-U67LRNER.js +0 -1
- package/lib/dist/web/chunk-UR5KDXPX.js +0 -1
- package/lib/dist/web/chunk-UR6O2GEH.js +0 -1
- package/lib/dist/web/chunk-USVLLFVR.js +0 -1
- package/lib/dist/web/chunk-UTNMGWTP.js +0 -1
- package/lib/dist/web/chunk-V74ZPP4B.js +0 -1
- package/lib/dist/web/chunk-VECWMHJP.js +0 -1
- package/lib/dist/web/chunk-VUACT35R.js +0 -3
- package/lib/dist/web/chunk-VZI7H4SZ.js +0 -1
- package/lib/dist/web/chunk-W5TEIONI.js +0 -2
- package/lib/dist/web/chunk-WB6YHOD4.js +0 -1
- package/lib/dist/web/chunk-WBJ5VEB5.js +0 -1
- package/lib/dist/web/chunk-WBT64AWV.js +0 -1
- package/lib/dist/web/chunk-WFXJIXZE.js +0 -4
- package/lib/dist/web/chunk-WTGYRH3Z.js +0 -298
- package/lib/dist/web/chunk-WXTCVDTP.js +0 -1
- package/lib/dist/web/chunk-XAUQEKZX.js +0 -1
- package/lib/dist/web/chunk-XCDHWLVH.js +0 -1
- package/lib/dist/web/chunk-XKG5X37F.js +0 -1
- package/lib/dist/web/chunk-Y3H6FFUZ.js +0 -1
- package/lib/dist/web/chunk-Y4F5ULGJ.js +0 -1
- package/lib/dist/web/chunk-YEGKAAEE.js +0 -1
- package/lib/dist/web/chunk-YM2KU57F.js +0 -1
- package/lib/dist/web/chunk-YRERBP6T.js +0 -1
- package/lib/dist/web/chunk-YV5LB22R.js +0 -1
- package/lib/dist/web/chunk-YWIRU745.js +0 -1
- package/lib/dist/web/chunk-ZLV4VCDG.js +0 -3
- package/lib/dist/web/chunk-ZTVI5KFF.js +0 -1
- package/lib/dist/web/favicon-16.png +0 -0
- package/lib/dist/web/favicon-180.png +0 -0
- package/lib/dist/web/favicon-32.png +0 -0
- package/lib/dist/web/favicon-512.png +0 -0
- package/lib/dist/web/favicon-small.svg +0 -15
- package/lib/dist/web/favicon.ico +0 -0
- package/lib/dist/web/favicon.svg +0 -20
- package/lib/dist/web/icon-192.png +0 -0
- package/lib/dist/web/icon-512.png +0 -0
- package/lib/dist/web/index.html +0 -146
- package/lib/dist/web/main-ESADRXN2.css +0 -1
- package/lib/dist/web/main-JT2RR3JS.js +0 -1
- package/lib/dist/web/manifest.webmanifest +0 -15
- package/lib/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
- package/lib/dist/web/sw.js +0 -69
- /package/lib/dist/{web/styles-ATJUD7TT.css → server/ssr/public/app.css} +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `specship reflect` CLI, and the dashboard's Improvements list.
|
|
8
8
|
*/
|
|
9
9
|
export * from './types';
|
|
10
|
-
export { mineProposals } from './miner';
|
|
10
|
+
export { mineProposals, projectPathForms } from './miner';
|
|
11
11
|
export { buildProposal, learningMarkers, memoryNoteMarker } from './targets';
|
|
12
12
|
export { previewProposal, applyProposal, undoProposal, lineDiff } from './apply';
|
|
13
13
|
export { ReflectStore } from './store';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reflect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reflect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -22,10 +22,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
22
22
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.sweep = exports.analyze = exports.ReflectStore = exports.lineDiff = exports.undoProposal = exports.applyProposal = exports.previewProposal = exports.memoryNoteMarker = exports.learningMarkers = exports.buildProposal = exports.mineProposals = void 0;
|
|
25
|
+
exports.sweep = exports.analyze = exports.ReflectStore = exports.lineDiff = exports.undoProposal = exports.applyProposal = exports.previewProposal = exports.memoryNoteMarker = exports.learningMarkers = exports.buildProposal = exports.projectPathForms = exports.mineProposals = void 0;
|
|
26
26
|
__exportStar(require("./types"), exports);
|
|
27
27
|
var miner_1 = require("./miner");
|
|
28
28
|
Object.defineProperty(exports, "mineProposals", { enumerable: true, get: function () { return miner_1.mineProposals; } });
|
|
29
|
+
Object.defineProperty(exports, "projectPathForms", { enumerable: true, get: function () { return miner_1.projectPathForms; } });
|
|
29
30
|
var targets_1 = require("./targets");
|
|
30
31
|
Object.defineProperty(exports, "buildProposal", { enumerable: true, get: function () { return targets_1.buildProposal; } });
|
|
31
32
|
Object.defineProperty(exports, "learningMarkers", { enumerable: true, get: function () { return targets_1.learningMarkers; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reflect/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reflect/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,iCAA0D;AAAjD,sGAAA,aAAa,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AACxC,qCAA6E;AAApE,wGAAA,aAAa,OAAA;AAAE,0GAAA,eAAe,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACzD,iCAAiF;AAAxE,wGAAA,eAAe,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAC/D,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,iCAAyC;AAAhC,gGAAA,OAAO,OAAA;AAAE,8FAAA,KAAK,OAAA"}
|
|
@@ -16,6 +16,14 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { SqliteDatabase } from '../db/sqlite-adapter';
|
|
18
18
|
import { Proposal, ReflectContext } from './types';
|
|
19
|
+
/**
|
|
20
|
+
* The two forms a project's path can take in `claude_sessions.project_path`
|
|
21
|
+
* (REQ-REFLECT-008): the real absolute path, and the mangled form the ingest
|
|
22
|
+
* stores — Claude Code slug-encodes every non-alphanumeric character to '-',
|
|
23
|
+
* and the ingest decodes every '-' back to '/', so round-tripping the real
|
|
24
|
+
* path reproduces the stored value (`/a/b-c` → `/a/b/c`).
|
|
25
|
+
*/
|
|
26
|
+
export declare function projectPathForms(projectRoot: string): [string, string];
|
|
19
27
|
/** Mine all rules. Pure read — never writes the DB or disk. */
|
|
20
28
|
export declare function mineProposals(db: SqliteDatabase, ctx: ReflectContext): Proposal[];
|
|
21
29
|
//# sourceMappingURL=miner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miner.d.ts","sourceRoot":"","sources":["../../src/reflect/miner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"miner.d.ts","sourceRoot":"","sources":["../../src/reflect/miner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuBnD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAItE;AAsBD,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,QAAQ,EAAE,CAmBjF"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* caller can render the empty state rather than erroring (REQ-REFLECT-001.A2).
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.projectPathForms = projectPathForms;
|
|
19
20
|
exports.mineProposals = mineProposals;
|
|
20
21
|
const targets_1 = require("./targets");
|
|
21
22
|
/** Tuning knobs — thresholds above which a pattern is worth proposing. */
|
|
@@ -37,6 +38,25 @@ const THRESHOLDS = {
|
|
|
37
38
|
};
|
|
38
39
|
/** Per-rule cap so a noisy corpus can't flood the Improvements list. */
|
|
39
40
|
const PER_RULE_LIMIT = 5;
|
|
41
|
+
/**
|
|
42
|
+
* The two forms a project's path can take in `claude_sessions.project_path`
|
|
43
|
+
* (REQ-REFLECT-008): the real absolute path, and the mangled form the ingest
|
|
44
|
+
* stores — Claude Code slug-encodes every non-alphanumeric character to '-',
|
|
45
|
+
* and the ingest decodes every '-' back to '/', so round-tripping the real
|
|
46
|
+
* path reproduces the stored value (`/a/b-c` → `/a/b/c`).
|
|
47
|
+
*/
|
|
48
|
+
function projectPathForms(projectRoot) {
|
|
49
|
+
const real = projectRoot.replace(/\/+$/, '') || projectRoot;
|
|
50
|
+
const mangled = real.replace(/[^A-Za-z0-9]/g, '/');
|
|
51
|
+
return [real, mangled];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SQL predicate restricting a claude_* row to the target project's own
|
|
55
|
+
* sessions (REQ-REFLECT-008) — the analytics tables span every project, and a
|
|
56
|
+
* pattern from another project's transcripts must never become a proposal
|
|
57
|
+
* here. Binds the two `projectPathForms` values, in order.
|
|
58
|
+
*/
|
|
59
|
+
const IN_PROJECT = `session_id IN (SELECT id FROM claude_sessions WHERE project_path IN (?, ?))`;
|
|
40
60
|
function tableExists(db, name) {
|
|
41
61
|
try {
|
|
42
62
|
const row = db
|
|
@@ -53,19 +73,20 @@ function mineProposals(db, ctx) {
|
|
|
53
73
|
if (!tableExists(db, 'claude_tool_calls') || !tableExists(db, 'claude_prompts')) {
|
|
54
74
|
return [];
|
|
55
75
|
}
|
|
76
|
+
const forms = projectPathForms(ctx.projectRoot);
|
|
56
77
|
const out = [];
|
|
57
|
-
out.push(...ruleRepeatedReads(db, ctx));
|
|
58
|
-
out.push(...ruleGrepHabit(db, ctx));
|
|
59
|
-
out.push(...ruleRepeatedPrompts(db, ctx));
|
|
60
|
-
out.push(...ruleRepeatedCommands(db, ctx));
|
|
78
|
+
out.push(...ruleRepeatedReads(db, ctx, forms));
|
|
79
|
+
out.push(...ruleGrepHabit(db, ctx, forms));
|
|
80
|
+
out.push(...ruleRepeatedPrompts(db, ctx, forms));
|
|
81
|
+
out.push(...ruleRepeatedCommands(db, ctx, forms));
|
|
61
82
|
// Round 2 detectors.
|
|
62
|
-
out.push(...ruleDestructiveCommands(db, ctx));
|
|
63
|
-
out.push(...ruleEditHotspot(db, ctx));
|
|
64
|
-
out.push(...ruleRecurringCorrection(db, ctx));
|
|
83
|
+
out.push(...ruleDestructiveCommands(db, ctx, forms));
|
|
84
|
+
out.push(...ruleEditHotspot(db, ctx, forms));
|
|
85
|
+
out.push(...ruleRecurringCorrection(db, ctx, forms));
|
|
65
86
|
// Round 3 detectors.
|
|
66
|
-
out.push(...ruleSpecshipCold(db, ctx));
|
|
67
|
-
out.push(...ruleHeavyOutput(db, ctx));
|
|
68
|
-
out.push(...ruleReferenceDoc(db, ctx));
|
|
87
|
+
out.push(...ruleSpecshipCold(db, ctx, forms));
|
|
88
|
+
out.push(...ruleHeavyOutput(db, ctx, forms));
|
|
89
|
+
out.push(...ruleReferenceDoc(db, ctx, forms));
|
|
69
90
|
return out;
|
|
70
91
|
}
|
|
71
92
|
/**
|
|
@@ -73,16 +94,16 @@ function mineProposals(db, ctx) {
|
|
|
73
94
|
* in a single session. A project-specific rule steering it to specship_explore
|
|
74
95
|
* for that area is the durable fix.
|
|
75
96
|
*/
|
|
76
|
-
function ruleRepeatedReads(db, ctx) {
|
|
97
|
+
function ruleRepeatedReads(db, ctx, forms) {
|
|
77
98
|
const rows = db
|
|
78
99
|
.prepare(`SELECT session_id, input_summary AS file, COUNT(*) AS n
|
|
79
100
|
FROM claude_tool_calls
|
|
80
|
-
WHERE tool_name = 'Read' AND input_summary != ''
|
|
101
|
+
WHERE tool_name = 'Read' AND input_summary != '' AND ${IN_PROJECT}
|
|
81
102
|
GROUP BY session_id, input_summary
|
|
82
103
|
HAVING n >= ?
|
|
83
104
|
ORDER BY n DESC
|
|
84
105
|
LIMIT ?`)
|
|
85
|
-
.all(THRESHOLDS.repeatedReadsPerSession, PER_RULE_LIMIT);
|
|
106
|
+
.all(...forms, THRESHOLDS.repeatedReadsPerSession, PER_RULE_LIMIT);
|
|
86
107
|
return rows.map((r) => {
|
|
87
108
|
const base = r.file.split('/').pop() || r.file;
|
|
88
109
|
return (0, targets_1.buildProposal)(ctx, {
|
|
@@ -105,22 +126,24 @@ function ruleRepeatedReads(db, ctx) {
|
|
|
105
126
|
* R2 → memory_rule (portable ~/.claude/memory): heavy grep/find usage is a
|
|
106
127
|
* cross-project habit, so the learning is portable, not repo-specific.
|
|
107
128
|
*/
|
|
108
|
-
function ruleGrepHabit(db, ctx) {
|
|
129
|
+
function ruleGrepHabit(db, ctx, forms) {
|
|
109
130
|
const row = db
|
|
110
131
|
.prepare(`SELECT COUNT(*) AS n, COUNT(DISTINCT session_id) AS s
|
|
111
132
|
FROM claude_tool_calls
|
|
112
133
|
WHERE tool_name = 'Bash'
|
|
113
134
|
AND (input_summary LIKE 'grep%' OR input_summary LIKE '%grep %'
|
|
114
|
-
OR input_summary LIKE 'find %' OR input_summary LIKE 'rg %')
|
|
115
|
-
|
|
135
|
+
OR input_summary LIKE 'find %' OR input_summary LIKE 'rg %')
|
|
136
|
+
AND ${IN_PROJECT}`)
|
|
137
|
+
.get(...forms);
|
|
116
138
|
if (!row || row.n < THRESHOLDS.grepHabitTotal)
|
|
117
139
|
return [];
|
|
118
140
|
const sessRows = db
|
|
119
141
|
.prepare(`SELECT DISTINCT session_id FROM claude_tool_calls
|
|
120
142
|
WHERE tool_name = 'Bash' AND (input_summary LIKE '%grep %' OR input_summary LIKE 'grep%'
|
|
121
143
|
OR input_summary LIKE 'find %' OR input_summary LIKE 'rg %')
|
|
144
|
+
AND ${IN_PROJECT}
|
|
122
145
|
LIMIT 8`)
|
|
123
|
-
.all();
|
|
146
|
+
.all(...forms);
|
|
124
147
|
return [
|
|
125
148
|
(0, targets_1.buildProposal)(ctx, {
|
|
126
149
|
type: 'memory_rule',
|
|
@@ -146,15 +169,16 @@ function normalizePrompt(t) {
|
|
|
146
169
|
* R3 → skill (commands/ss-<name>.md): the user typed essentially the same ask
|
|
147
170
|
* many times. A reusable slash command captures the routine.
|
|
148
171
|
*/
|
|
149
|
-
function ruleRepeatedPrompts(db, ctx) {
|
|
172
|
+
function ruleRepeatedPrompts(db, ctx, forms) {
|
|
150
173
|
const rows = db
|
|
151
174
|
.prepare(`SELECT id, text FROM claude_prompts
|
|
152
175
|
WHERE text IS NOT NULL AND length(text) BETWEEN 12 AND 200
|
|
153
176
|
AND text NOT LIKE '<%' AND text NOT LIKE '%<command-name>%'
|
|
154
177
|
AND is_sidechain = 0
|
|
178
|
+
AND ${IN_PROJECT}
|
|
155
179
|
ORDER BY ts DESC
|
|
156
180
|
LIMIT 4000`)
|
|
157
|
-
.all();
|
|
181
|
+
.all(...forms);
|
|
158
182
|
const groups = new Map();
|
|
159
183
|
for (const r of rows) {
|
|
160
184
|
const key = normalizePrompt(r.text);
|
|
@@ -188,7 +212,7 @@ function ruleRepeatedPrompts(db, ctx) {
|
|
|
188
212
|
* R4 → hook (.claude/settings.json): the agent ran the same shell command after
|
|
189
213
|
* edits across multiple sessions. A PostToolUse hook automates the manual step.
|
|
190
214
|
*/
|
|
191
|
-
function ruleRepeatedCommands(db, ctx) {
|
|
215
|
+
function ruleRepeatedCommands(db, ctx, forms) {
|
|
192
216
|
const rows = db
|
|
193
217
|
.prepare(`SELECT input_summary AS cmd, COUNT(*) AS n, COUNT(DISTINCT session_id) AS s,
|
|
194
218
|
GROUP_CONCAT(DISTINCT session_id) AS sessions
|
|
@@ -197,11 +221,12 @@ function ruleRepeatedCommands(db, ctx) {
|
|
|
197
221
|
AND input_summary NOT LIKE 'grep%' AND input_summary NOT LIKE '%grep %'
|
|
198
222
|
AND input_summary NOT LIKE 'find %' AND input_summary NOT LIKE 'cd %'
|
|
199
223
|
AND input_summary NOT LIKE 'ls%' AND input_summary NOT LIKE 'cat %'
|
|
224
|
+
AND ${IN_PROJECT}
|
|
200
225
|
GROUP BY input_summary
|
|
201
226
|
HAVING s >= ? AND n >= ?
|
|
202
227
|
ORDER BY n DESC
|
|
203
228
|
LIMIT ?`)
|
|
204
|
-
.all(THRESHOLDS.repeatedCmdSessions, THRESHOLDS.repeatedCmdTotal, PER_RULE_LIMIT);
|
|
229
|
+
.all(...forms, THRESHOLDS.repeatedCmdSessions, THRESHOLDS.repeatedCmdTotal, PER_RULE_LIMIT);
|
|
205
230
|
return rows.map((r) => (0, targets_1.buildProposal)(ctx, {
|
|
206
231
|
type: 'hook',
|
|
207
232
|
severity: 'info',
|
|
@@ -231,10 +256,10 @@ const DESTRUCTIVE = [
|
|
|
231
256
|
* deliberately propose a *rule* rather than auto-generating a fragile guard
|
|
232
257
|
* script (a guard-hook variant is a future detector).
|
|
233
258
|
*/
|
|
234
|
-
function ruleDestructiveCommands(db, ctx) {
|
|
259
|
+
function ruleDestructiveCommands(db, ctx, forms) {
|
|
235
260
|
const rows = db
|
|
236
|
-
.prepare(`SELECT session_id, input_summary AS cmd FROM claude_tool_calls WHERE tool_name = 'Bash' AND input_summary != ''`)
|
|
237
|
-
.all();
|
|
261
|
+
.prepare(`SELECT session_id, input_summary AS cmd FROM claude_tool_calls WHERE tool_name = 'Bash' AND input_summary != '' AND ${IN_PROJECT}`)
|
|
262
|
+
.all(...forms);
|
|
238
263
|
const buckets = new Map();
|
|
239
264
|
for (const r of rows) {
|
|
240
265
|
for (const d of DESTRUCTIVE) {
|
|
@@ -273,17 +298,17 @@ function ruleDestructiveCommands(db, ctx) {
|
|
|
273
298
|
* sessions — a hotspot whose contract is worth documenting so future edits
|
|
274
299
|
* don't relearn it from scratch.
|
|
275
300
|
*/
|
|
276
|
-
function ruleEditHotspot(db, ctx) {
|
|
301
|
+
function ruleEditHotspot(db, ctx, forms) {
|
|
277
302
|
const rows = db
|
|
278
303
|
.prepare(`SELECT input_summary AS file, COUNT(*) AS n, COUNT(DISTINCT session_id) AS s,
|
|
279
304
|
GROUP_CONCAT(DISTINCT session_id) AS sessions
|
|
280
305
|
FROM claude_tool_calls
|
|
281
|
-
WHERE tool_name IN ('Edit', 'Write', 'MultiEdit') AND input_summary != ''
|
|
306
|
+
WHERE tool_name IN ('Edit', 'Write', 'MultiEdit') AND input_summary != '' AND ${IN_PROJECT}
|
|
282
307
|
GROUP BY input_summary
|
|
283
308
|
HAVING n >= ? AND s >= ?
|
|
284
309
|
ORDER BY n DESC
|
|
285
310
|
LIMIT ?`)
|
|
286
|
-
.all(THRESHOLDS.editHotspotTotal, THRESHOLDS.editHotspotSessions, PER_RULE_LIMIT);
|
|
311
|
+
.all(...forms, THRESHOLDS.editHotspotTotal, THRESHOLDS.editHotspotSessions, PER_RULE_LIMIT);
|
|
287
312
|
return rows.map((r) => {
|
|
288
313
|
const base = r.file.split('/').pop() || r.file;
|
|
289
314
|
return (0, targets_1.buildProposal)(ctx, {
|
|
@@ -309,15 +334,16 @@ const CORRECTION_CUE = /^(no\b|don'?t\b|do not\b|never\b|always\b|stop\b|instead
|
|
|
309
334
|
* corrective instruction. That's a durable preference worth recording so it
|
|
310
335
|
* doesn't have to be repeated — the core Hermes "learn from corrections" idea.
|
|
311
336
|
*/
|
|
312
|
-
function ruleRecurringCorrection(db, ctx) {
|
|
337
|
+
function ruleRecurringCorrection(db, ctx, forms) {
|
|
313
338
|
const rows = db
|
|
314
339
|
.prepare(`SELECT id, text FROM claude_prompts
|
|
315
340
|
WHERE text IS NOT NULL AND length(text) BETWEEN 12 AND 200
|
|
316
341
|
AND text NOT LIKE '<%' AND text NOT LIKE '%<command-name>%'
|
|
317
342
|
AND is_sidechain = 0
|
|
343
|
+
AND ${IN_PROJECT}
|
|
318
344
|
ORDER BY ts DESC
|
|
319
345
|
LIMIT 4000`)
|
|
320
|
-
.all();
|
|
346
|
+
.all(...forms);
|
|
321
347
|
const groups = new Map();
|
|
322
348
|
for (const r of rows) {
|
|
323
349
|
const trimmed = r.text.trim();
|
|
@@ -355,7 +381,7 @@ function ruleRecurringCorrection(db, ctx) {
|
|
|
355
381
|
* portable habit-note to query it first is the durable fix. Uses the
|
|
356
382
|
* `is_specship` classification on tool calls.
|
|
357
383
|
*/
|
|
358
|
-
function ruleSpecshipCold(db, ctx) {
|
|
384
|
+
function ruleSpecshipCold(db, ctx, forms) {
|
|
359
385
|
const rows = db
|
|
360
386
|
.prepare(`SELECT session_id,
|
|
361
387
|
SUM(CASE WHEN tool_name IN ('Read','Grep')
|
|
@@ -364,9 +390,10 @@ function ruleSpecshipCold(db, ctx) {
|
|
|
364
390
|
THEN 1 ELSE 0 END) AS reads,
|
|
365
391
|
SUM(is_specship) AS ss
|
|
366
392
|
FROM claude_tool_calls
|
|
393
|
+
WHERE ${IN_PROJECT}
|
|
367
394
|
GROUP BY session_id
|
|
368
395
|
HAVING reads >= ? AND ss = 0`)
|
|
369
|
-
.all(THRESHOLDS.specshipColdReadMin);
|
|
396
|
+
.all(...forms, THRESHOLDS.specshipColdReadMin);
|
|
370
397
|
if (rows.length < THRESHOLDS.specshipColdSessions)
|
|
371
398
|
return [];
|
|
372
399
|
const totalReads = rows.reduce((a, r) => a + r.reads, 0);
|
|
@@ -392,17 +419,17 @@ function ruleSpecshipCold(db, ctx) {
|
|
|
392
419
|
* into context, repeatedly. Scoping its output (or using a structural query) is
|
|
393
420
|
* the durable fix. Uses `result_length`.
|
|
394
421
|
*/
|
|
395
|
-
function ruleHeavyOutput(db, ctx) {
|
|
422
|
+
function ruleHeavyOutput(db, ctx, forms) {
|
|
396
423
|
const rows = db
|
|
397
424
|
.prepare(`SELECT input_summary AS cmd, COUNT(*) AS n, MAX(result_length) AS maxlen,
|
|
398
425
|
GROUP_CONCAT(DISTINCT session_id) AS sessions
|
|
399
426
|
FROM claude_tool_calls
|
|
400
|
-
WHERE tool_name = 'Bash' AND input_summary != '' AND result_length > ?
|
|
427
|
+
WHERE tool_name = 'Bash' AND input_summary != '' AND result_length > ? AND ${IN_PROJECT}
|
|
401
428
|
GROUP BY input_summary
|
|
402
429
|
HAVING n >= ?
|
|
403
430
|
ORDER BY maxlen DESC
|
|
404
431
|
LIMIT ?`)
|
|
405
|
-
.all(THRESHOLDS.heavyOutputBytes, THRESHOLDS.heavyOutputMin, PER_RULE_LIMIT);
|
|
432
|
+
.all(THRESHOLDS.heavyOutputBytes, ...forms, THRESHOLDS.heavyOutputMin, PER_RULE_LIMIT);
|
|
406
433
|
return rows.map((r) => (0, targets_1.buildProposal)(ctx, {
|
|
407
434
|
type: 'memory_rule',
|
|
408
435
|
scope: 'project',
|
|
@@ -424,7 +451,7 @@ function ruleHeavyOutput(db, ctx) {
|
|
|
424
451
|
* from CLAUDE.md keeps it in context. Distinct from R1 (in-session re-reads of
|
|
425
452
|
* any file) — this keys on cross-session breadth of a *doc* file.
|
|
426
453
|
*/
|
|
427
|
-
function ruleReferenceDoc(db, ctx) {
|
|
454
|
+
function ruleReferenceDoc(db, ctx, forms) {
|
|
428
455
|
const rows = db
|
|
429
456
|
.prepare(`SELECT input_summary AS file, COUNT(DISTINCT session_id) AS s,
|
|
430
457
|
GROUP_CONCAT(DISTINCT session_id) AS sessions
|
|
@@ -433,11 +460,12 @@ function ruleReferenceDoc(db, ctx) {
|
|
|
433
460
|
AND (input_summary LIKE '%.md' OR input_summary LIKE '%.mdx'
|
|
434
461
|
OR input_summary LIKE '%.txt' OR input_summary LIKE '%.rst'
|
|
435
462
|
OR input_summary LIKE '%.adoc')
|
|
463
|
+
AND ${IN_PROJECT}
|
|
436
464
|
GROUP BY input_summary
|
|
437
465
|
HAVING s >= ?
|
|
438
466
|
ORDER BY s DESC
|
|
439
467
|
LIMIT ?`)
|
|
440
|
-
.all(THRESHOLDS.refDocSessions, PER_RULE_LIMIT);
|
|
468
|
+
.all(...forms, THRESHOLDS.refDocSessions, PER_RULE_LIMIT);
|
|
441
469
|
return rows.map((r) => {
|
|
442
470
|
const base = r.file.split('/').pop() || r.file;
|
|
443
471
|
return (0, targets_1.buildProposal)(ctx, {
|
|
@@ -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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"}
|
package/lib/dist/server/cli.js
CHANGED
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
* The JSONL ingest watcher is started inside `createServer()` by default —
|
|
12
12
|
* pass `--no-ingest` to disable.
|
|
13
13
|
*/
|
|
14
|
-
import path from 'node:path';
|
|
15
|
-
import { existsSync } from 'node:fs';
|
|
16
|
-
import { fileURLToPath } from 'node:url';
|
|
17
14
|
import { spawn } from 'node:child_process';
|
|
18
15
|
import { createServer } from './server.js';
|
|
19
16
|
function parseArgs() {
|
|
@@ -64,45 +61,6 @@ Options:
|
|
|
64
61
|
}
|
|
65
62
|
return args;
|
|
66
63
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Locate the built Angular UI. Tries (in order):
|
|
69
|
-
* 1. Explicit --web-dir / env var
|
|
70
|
-
* 2. Sibling `public/web/` next to the running script (production layout)
|
|
71
|
-
* 3. Sibling `../web-ng/dist/web-ng/browser/` (monorepo dev layout)
|
|
72
|
-
* 4. Walk up looking for `packages/web-ng/dist/web-ng/browser/`
|
|
73
|
-
* Returns null when nothing is found — the server then runs API-only.
|
|
74
|
-
*/
|
|
75
|
-
function locateWebDir(explicit) {
|
|
76
|
-
const envDir = process.env.SPECSHIP_WEB_DIR ?? process.env.SPECSHIP_WEB_DIR;
|
|
77
|
-
const candidates = [];
|
|
78
|
-
if (explicit)
|
|
79
|
-
candidates.push(path.resolve(explicit));
|
|
80
|
-
if (envDir)
|
|
81
|
-
candidates.push(path.resolve(envDir));
|
|
82
|
-
// __dirname equivalent in ESM
|
|
83
|
-
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
84
|
-
// Production layout: <pkg>/dist/cli.js, UI shipped at <pkg>/public/web/
|
|
85
|
-
candidates.push(path.resolve(here, '..', 'public', 'web'));
|
|
86
|
-
candidates.push(path.resolve(here, '..', '..', 'public', 'web'));
|
|
87
|
-
// Monorepo dev layout: packages/server/dist/cli.js → packages/web-ng/dist/web-ng/browser
|
|
88
|
-
candidates.push(path.resolve(here, '..', '..', 'web-ng', 'dist', 'web-ng', 'browser'));
|
|
89
|
-
candidates.push(path.resolve(here, '..', '..', '..', 'web-ng', 'dist', 'web-ng', 'browser'));
|
|
90
|
-
// Walk up from cwd looking for the monorepo layout (handy when run via npx
|
|
91
|
-
// inside a checkout).
|
|
92
|
-
let cur = process.cwd();
|
|
93
|
-
for (let depth = 0; depth < 6; depth++) {
|
|
94
|
-
candidates.push(path.join(cur, 'packages', 'web-ng', 'dist', 'web-ng', 'browser'));
|
|
95
|
-
const parent = path.dirname(cur);
|
|
96
|
-
if (parent === cur)
|
|
97
|
-
break;
|
|
98
|
-
cur = parent;
|
|
99
|
-
}
|
|
100
|
-
for (const c of candidates) {
|
|
101
|
-
if (existsSync(path.join(c, 'index.html')))
|
|
102
|
-
return c;
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
64
|
function tryOpenInBrowser(url) {
|
|
107
65
|
const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
|
|
108
66
|
try {
|
|
@@ -114,26 +72,24 @@ function tryOpenInBrowser(url) {
|
|
|
114
72
|
}
|
|
115
73
|
async function main() {
|
|
116
74
|
const args = parseArgs();
|
|
117
|
-
const
|
|
75
|
+
const serveUi = !args.noWeb;
|
|
118
76
|
const handle = await createServer({
|
|
119
77
|
projectRoot: args.projectRoot ?? undefined,
|
|
120
78
|
host: args.host,
|
|
121
79
|
port: args.port,
|
|
122
80
|
ingest: args.ingest,
|
|
123
81
|
verbose: args.verbose,
|
|
124
|
-
webDir,
|
|
82
|
+
webDir: null,
|
|
83
|
+
ssr: serveUi,
|
|
125
84
|
});
|
|
126
85
|
console.error(`[specship-desktop] listening on ${handle.url}`);
|
|
127
86
|
if (args.projectRoot) {
|
|
128
87
|
console.error(`[specship-desktop] project: ${args.projectRoot}`);
|
|
129
88
|
}
|
|
130
89
|
else {
|
|
131
|
-
console.error(`[specship-desktop] project: (none — pick one in the
|
|
90
|
+
console.error(`[specship-desktop] project: (none — pick one in the dashboard)`);
|
|
132
91
|
}
|
|
133
|
-
|
|
134
|
-
console.error(`[specship-desktop] UI: ${webDir}`);
|
|
135
|
-
else
|
|
136
|
-
console.error(`[specship-desktop] UI: (none — running headless)`);
|
|
92
|
+
console.error(`[specship-desktop] UI: ${serveUi ? handle.url + '/ (server-rendered)' : '(none — running headless)'}`);
|
|
137
93
|
if (args.ingest)
|
|
138
94
|
console.error(`[specship-desktop] Claude Code transcript ingest active`);
|
|
139
95
|
if (args.open)
|
|
@@ -819,17 +819,24 @@ export async function registerClaudeRoutes(app) {
|
|
|
819
819
|
return;
|
|
820
820
|
const db = getDb(cg);
|
|
821
821
|
const tips = [];
|
|
822
|
+
// The claude_* tables span every project's sessions; tips for the primary
|
|
823
|
+
// project must cite only its own (REQ-DASHINT-006). Sessions store the
|
|
824
|
+
// project path in the mangled slug round-trip form, so match both it and
|
|
825
|
+
// the real path.
|
|
826
|
+
const realRoot = (cg.getProjectRoot ? cg.getProjectRoot() : '').replace(/\/+$/, '');
|
|
827
|
+
const mangledRoot = realRoot.replace(/[^A-Za-z0-9]/g, '/');
|
|
828
|
+
const inProject = `session_id IN (SELECT id FROM claude_sessions WHERE project_path IN (?, ?))`;
|
|
822
829
|
// Rule 1: "you read X N times" — same file path Read more than 10 times in
|
|
823
830
|
// a single session.
|
|
824
831
|
const wastefulReads = db.prepare(`
|
|
825
832
|
SELECT session_id, input_summary as file, COUNT(*) as n
|
|
826
833
|
FROM claude_tool_calls
|
|
827
|
-
WHERE tool_name = 'Read' AND input_summary != ''
|
|
834
|
+
WHERE tool_name = 'Read' AND input_summary != '' AND ${inProject}
|
|
828
835
|
GROUP BY session_id, input_summary
|
|
829
836
|
HAVING n >= 10
|
|
830
837
|
ORDER BY n DESC
|
|
831
838
|
LIMIT 5
|
|
832
|
-
`).all();
|
|
839
|
+
`).all(realRoot, mangledRoot);
|
|
833
840
|
for (const r of wastefulReads) {
|
|
834
841
|
tips.push({
|
|
835
842
|
id: 'wasteful_reads:' + r.session_id + ':' + r.file,
|
|
@@ -846,10 +853,10 @@ export async function registerClaudeRoutes(app) {
|
|
|
846
853
|
const heavyResults = db.prepare(`
|
|
847
854
|
SELECT id, session_id, tool_name, input_summary, result_length
|
|
848
855
|
FROM claude_tool_calls
|
|
849
|
-
WHERE result_length > 50000
|
|
856
|
+
WHERE result_length > 50000 AND ${inProject}
|
|
850
857
|
ORDER BY result_length DESC
|
|
851
858
|
LIMIT 5
|
|
852
|
-
`).all();
|
|
859
|
+
`).all(realRoot, mangledRoot);
|
|
853
860
|
for (const r of heavyResults) {
|
|
854
861
|
tips.push({
|
|
855
862
|
id: 'heavy_result:' + r.id,
|
|
@@ -868,9 +875,10 @@ export async function registerClaudeRoutes(app) {
|
|
|
868
875
|
FROM claude_sessions s
|
|
869
876
|
WHERE s.prompt_count >= 10
|
|
870
877
|
AND (s.total_input_tokens + s.total_cache_creation_tokens + s.total_cache_read_tokens) > 0
|
|
878
|
+
AND s.project_path IN (?, ?)
|
|
871
879
|
ORDER BY (CAST(s.total_cache_read_tokens AS REAL) / (s.total_input_tokens + s.total_cache_creation_tokens + s.total_cache_read_tokens)) ASC
|
|
872
880
|
LIMIT 3
|
|
873
|
-
`).all();
|
|
881
|
+
`).all(realRoot, mangledRoot);
|
|
874
882
|
for (const r of lowCache) {
|
|
875
883
|
const total = r.ti + r.cw + r.cr;
|
|
876
884
|
const rate = total > 0 ? r.cr / total : 0;
|
|
@@ -20,7 +20,7 @@ import { startWatcher, primaryProjectMatcher } from './ingest/index.js';
|
|
|
20
20
|
import { backfillDisplaced } from './ingest/impact-backfill.js';
|
|
21
21
|
import { recostUnpricedPrompts } from './ingest/pricing-backfill.js';
|
|
22
22
|
import { ProjectRegistry } from './project-registry.js';
|
|
23
|
-
import { makeStaticHandler } from './static-handler.js';
|
|
23
|
+
import { makeStaticHandler, isAssetPath } from './static-handler.js';
|
|
24
24
|
import { registerGraphRoutes } from './routes/graph.js';
|
|
25
25
|
import { registerSpecRoutes } from './routes/spec.js';
|
|
26
26
|
import { registerWorkflowRoutes } from './routes/workflow.js';
|
|
@@ -193,6 +193,14 @@ export async function createServer(options) {
|
|
|
193
193
|
await registerMaintainabilityRoutes(app);
|
|
194
194
|
await registerDomainRoutes(app);
|
|
195
195
|
await registerChatRoutes(app);
|
|
196
|
+
// SSR dashboard (DASH-LEAN-DOC / REQ-DASHLEAN-004): explicit page routes
|
|
197
|
+
// rendered in-process from the /api handlers above (via app.inject), plus the
|
|
198
|
+
// dashboard's static assets. Registered AFTER /api and BEFORE the SPA
|
|
199
|
+
// fallback so the explicit page routes win.
|
|
200
|
+
if (options.ssr) {
|
|
201
|
+
const { registerSsrRoutes } = await import('./ssr/routes.js');
|
|
202
|
+
await registerSsrRoutes(app);
|
|
203
|
+
}
|
|
196
204
|
// Optional: serve the built Angular UI from `webDir` and fall back to
|
|
197
205
|
// index.html for client-side routes. Must register AFTER the /api/*
|
|
198
206
|
// routes so they take precedence over the SPA wildcard.
|
|
@@ -217,7 +225,10 @@ export async function createServer(options) {
|
|
|
217
225
|
// 2. Fall through to index.html for any other GET so Angular's
|
|
218
226
|
// client-side router can take over (`/memory`, `/graph`, …).
|
|
219
227
|
// Non-GET methods and `/api/*` paths still 404 cleanly so the UI
|
|
220
|
-
// can surface them.
|
|
228
|
+
// can surface them. A MISSING asset path (e.g. a stale build's old
|
|
229
|
+
// content-hashed bundle) must also 404, never receive the shell —
|
|
230
|
+
// HTML under an asset URL poisons the offline service worker's cache
|
|
231
|
+
// (REQ-OFFLINE-005).
|
|
221
232
|
app.setNotFoundHandler((request, reply) => {
|
|
222
233
|
if (request.method !== 'GET') {
|
|
223
234
|
reply.code(404).send({ error: 'not found' });
|
|
@@ -232,6 +243,10 @@ export async function createServer(options) {
|
|
|
232
243
|
reply.code(200).type(hit.contentType).send(hit.body);
|
|
233
244
|
return;
|
|
234
245
|
}
|
|
246
|
+
if (isAssetPath(request.url)) {
|
|
247
|
+
reply.code(404).send({ error: 'not found' });
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
235
250
|
reply.code(200).type('text/html').send(cachedIndex);
|
|
236
251
|
});
|
|
237
252
|
if (verbose)
|