jfl 0.5.0 → 0.6.1
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/commands/context-hub.d.ts +1 -0
- package/dist/commands/context-hub.d.ts.map +1 -1
- package/dist/commands/context-hub.js +246 -2
- package/dist/commands/context-hub.js.map +1 -1
- package/dist/commands/peter.d.ts +2 -0
- package/dist/commands/peter.d.ts.map +1 -1
- package/dist/commands/peter.js +242 -52
- package/dist/commands/peter.js.map +1 -1
- package/dist/commands/setup.d.ts +12 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +322 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/train.d.ts +33 -0
- package/dist/commands/train.d.ts.map +1 -0
- package/dist/commands/train.js +510 -0
- package/dist/commands/train.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +276 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/dashboard-static/assets/index-CW9ZxqX8.css +1 -0
- package/dist/dashboard-static/assets/index-DNN__p4K.js +121 -0
- package/dist/dashboard-static/index.html +2 -2
- package/dist/index.js +99 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-session.d.ts.map +1 -1
- package/dist/lib/agent-session.js +12 -4
- package/dist/lib/agent-session.js.map +1 -1
- package/dist/lib/eval-snapshot.js +1 -1
- package/dist/lib/eval-snapshot.js.map +1 -1
- package/dist/lib/pi-sky/bridge.d.ts +55 -0
- package/dist/lib/pi-sky/bridge.d.ts.map +1 -0
- package/dist/lib/pi-sky/bridge.js +264 -0
- package/dist/lib/pi-sky/bridge.js.map +1 -0
- package/dist/lib/pi-sky/cost-monitor.d.ts +21 -0
- package/dist/lib/pi-sky/cost-monitor.d.ts.map +1 -0
- package/dist/lib/pi-sky/cost-monitor.js +126 -0
- package/dist/lib/pi-sky/cost-monitor.js.map +1 -0
- package/dist/lib/pi-sky/eval-sweep.d.ts +27 -0
- package/dist/lib/pi-sky/eval-sweep.d.ts.map +1 -0
- package/dist/lib/pi-sky/eval-sweep.js +141 -0
- package/dist/lib/pi-sky/eval-sweep.js.map +1 -0
- package/dist/lib/pi-sky/event-router.d.ts +32 -0
- package/dist/lib/pi-sky/event-router.d.ts.map +1 -0
- package/dist/lib/pi-sky/event-router.js +176 -0
- package/dist/lib/pi-sky/event-router.js.map +1 -0
- package/dist/lib/pi-sky/experiment.d.ts +9 -0
- package/dist/lib/pi-sky/experiment.d.ts.map +1 -0
- package/dist/lib/pi-sky/experiment.js +83 -0
- package/dist/lib/pi-sky/experiment.js.map +1 -0
- package/dist/lib/pi-sky/index.d.ts +16 -0
- package/dist/lib/pi-sky/index.d.ts.map +1 -0
- package/dist/lib/pi-sky/index.js +16 -0
- package/dist/lib/pi-sky/index.js.map +1 -0
- package/dist/lib/pi-sky/stratus-gate.d.ts +28 -0
- package/dist/lib/pi-sky/stratus-gate.d.ts.map +1 -0
- package/dist/lib/pi-sky/stratus-gate.js +61 -0
- package/dist/lib/pi-sky/stratus-gate.js.map +1 -0
- package/dist/lib/pi-sky/swarm.d.ts +28 -0
- package/dist/lib/pi-sky/swarm.d.ts.map +1 -0
- package/dist/lib/pi-sky/swarm.js +208 -0
- package/dist/lib/pi-sky/swarm.js.map +1 -0
- package/dist/lib/pi-sky/types.d.ts +139 -0
- package/dist/lib/pi-sky/types.d.ts.map +1 -0
- package/dist/lib/pi-sky/types.js +2 -0
- package/dist/lib/pi-sky/types.js.map +1 -0
- package/dist/lib/pi-sky/voice-bridge.d.ts +20 -0
- package/dist/lib/pi-sky/voice-bridge.d.ts.map +1 -0
- package/dist/lib/pi-sky/voice-bridge.js +91 -0
- package/dist/lib/pi-sky/voice-bridge.js.map +1 -0
- package/dist/lib/policy-head.d.ts +16 -1
- package/dist/lib/policy-head.d.ts.map +1 -1
- package/dist/lib/policy-head.js +117 -19
- package/dist/lib/policy-head.js.map +1 -1
- package/dist/lib/predictor.d.ts +10 -0
- package/dist/lib/predictor.d.ts.map +1 -1
- package/dist/lib/predictor.js +46 -7
- package/dist/lib/predictor.js.map +1 -1
- package/dist/lib/setup/agent-generator.d.ts +18 -0
- package/dist/lib/setup/agent-generator.d.ts.map +1 -0
- package/dist/lib/setup/agent-generator.js +114 -0
- package/dist/lib/setup/agent-generator.js.map +1 -0
- package/dist/lib/setup/context-analyzer.d.ts +16 -0
- package/dist/lib/setup/context-analyzer.d.ts.map +1 -0
- package/dist/lib/setup/context-analyzer.js +112 -0
- package/dist/lib/setup/context-analyzer.js.map +1 -0
- package/dist/lib/setup/doc-auditor.d.ts +54 -0
- package/dist/lib/setup/doc-auditor.d.ts.map +1 -0
- package/dist/lib/setup/doc-auditor.js +629 -0
- package/dist/lib/setup/doc-auditor.js.map +1 -0
- package/dist/lib/setup/domain-generator.d.ts +7 -0
- package/dist/lib/setup/domain-generator.d.ts.map +1 -0
- package/dist/lib/setup/domain-generator.js +58 -0
- package/dist/lib/setup/domain-generator.js.map +1 -0
- package/dist/lib/setup/smart-eval-generator.d.ts +38 -0
- package/dist/lib/setup/smart-eval-generator.d.ts.map +1 -0
- package/dist/lib/setup/smart-eval-generator.js +378 -0
- package/dist/lib/setup/smart-eval-generator.js.map +1 -0
- package/dist/lib/setup/smart-recommender.d.ts +63 -0
- package/dist/lib/setup/smart-recommender.d.ts.map +1 -0
- package/dist/lib/setup/smart-recommender.js +329 -0
- package/dist/lib/setup/smart-recommender.js.map +1 -0
- package/dist/lib/setup/spec-generator.d.ts +63 -0
- package/dist/lib/setup/spec-generator.d.ts.map +1 -0
- package/dist/lib/setup/spec-generator.js +310 -0
- package/dist/lib/setup/spec-generator.js.map +1 -0
- package/dist/lib/setup/violation-agent-generator.d.ts +32 -0
- package/dist/lib/setup/violation-agent-generator.d.ts.map +1 -0
- package/dist/lib/setup/violation-agent-generator.js +255 -0
- package/dist/lib/setup/violation-agent-generator.js.map +1 -0
- package/package.json +1 -1
- package/packages/pi/extensions/context.ts +88 -55
- package/packages/pi/extensions/hub-resolver.ts +63 -0
- package/packages/pi/extensions/index.ts +16 -3
- package/packages/pi/extensions/memory-tool.ts +9 -4
- package/packages/pi/extensions/session.ts +68 -16
- package/packages/pi/extensions/tool-renderers.ts +23 -8
- package/scripts/train/requirements.txt +5 -0
- package/scripts/train/train-policy-head.py +477 -0
- package/scripts/train/v2/dataset.py +81 -0
- package/scripts/train/v2/domain.json +18 -0
- package/scripts/train/v2/eval.py +196 -0
- package/scripts/train/v2/generate_data.py +219 -0
- package/scripts/train/v2/infer.py +188 -0
- package/scripts/train/v2/model.py +112 -0
- package/scripts/train/v2/precompute.py +132 -0
- package/scripts/train/v2/train.py +302 -0
- package/scripts/train/v2/transform_buffer.py +227 -0
- package/scripts/train/v2/validate_data.py +115 -0
- package/template/.claude/settings.json +2 -15
- package/template/scripts/session/session-cleanup.sh +2 -11
- package/template/scripts/session/session-end-hub.sh +72 -0
- package/template/scripts/session/session-start-hub.sh +105 -0
- package/dist/dashboard-static/assets/index-B6b867Pv.js +0 -121
- package/dist/dashboard-static/assets/index-Y4BrqxV-.css +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Analyze GTM context for RL agent recommendations — journals, knowledge docs, git history
|
|
3
|
+
*/
|
|
4
|
+
export interface ProjectContext {
|
|
5
|
+
journalCount: number;
|
|
6
|
+
sessionCount: number;
|
|
7
|
+
hasKnowledge: boolean;
|
|
8
|
+
hasProductRepo: boolean;
|
|
9
|
+
agents: string[];
|
|
10
|
+
topFilePatterns: string[];
|
|
11
|
+
metricCategories: string[];
|
|
12
|
+
readinessScore: number;
|
|
13
|
+
issues: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare function analyzeContext(projectRoot: string): ProjectContext;
|
|
16
|
+
//# sourceMappingURL=context-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-analyzer.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/context-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAiGlE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Analyze GTM context for RL agent recommendations — journals, knowledge docs, git history
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, readFileSync, readdirSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
export function analyzeContext(projectRoot) {
|
|
7
|
+
const ctx = {
|
|
8
|
+
journalCount: 0,
|
|
9
|
+
sessionCount: 0,
|
|
10
|
+
hasKnowledge: false,
|
|
11
|
+
hasProductRepo: false,
|
|
12
|
+
agents: [],
|
|
13
|
+
topFilePatterns: [],
|
|
14
|
+
metricCategories: [],
|
|
15
|
+
readinessScore: 0,
|
|
16
|
+
issues: [],
|
|
17
|
+
};
|
|
18
|
+
// Count journal entries
|
|
19
|
+
const journalDir = join(projectRoot, ".jfl", "journal");
|
|
20
|
+
if (existsSync(journalDir)) {
|
|
21
|
+
const files = readdirSync(journalDir).filter(f => f.endsWith(".jsonl"));
|
|
22
|
+
ctx.sessionCount = files.length;
|
|
23
|
+
for (const file of files) {
|
|
24
|
+
const content = readFileSync(join(journalDir, file), "utf-8");
|
|
25
|
+
ctx.journalCount += content.split("\n").filter(l => l.trim()).length;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Check knowledge docs
|
|
29
|
+
const knowledgeDir = join(projectRoot, "knowledge");
|
|
30
|
+
if (existsSync(knowledgeDir)) {
|
|
31
|
+
const requiredDocs = ["VISION.md", "ROADMAP.md"];
|
|
32
|
+
const found = requiredDocs.filter(d => existsSync(join(knowledgeDir, d)));
|
|
33
|
+
ctx.hasKnowledge = found.length > 0;
|
|
34
|
+
}
|
|
35
|
+
// Check product repo
|
|
36
|
+
ctx.hasProductRepo = existsSync(join(projectRoot, "product")) || existsSync(join(projectRoot, ".jfl", "config.json"));
|
|
37
|
+
// Existing agents
|
|
38
|
+
const agentsDir = join(projectRoot, ".jfl", "agents");
|
|
39
|
+
if (existsSync(agentsDir)) {
|
|
40
|
+
ctx.agents = readdirSync(agentsDir).filter(f => f.endsWith(".toml")).map(f => f.replace(".toml", ""));
|
|
41
|
+
}
|
|
42
|
+
// Identify metric categories from journals
|
|
43
|
+
const categories = new Set();
|
|
44
|
+
if (existsSync(journalDir)) {
|
|
45
|
+
for (const file of readdirSync(journalDir).filter(f => f.endsWith(".jsonl"))) {
|
|
46
|
+
const content = readFileSync(join(journalDir, file), "utf-8");
|
|
47
|
+
for (const line of content.split("\n").filter(l => l.trim())) {
|
|
48
|
+
try {
|
|
49
|
+
const entry = JSON.parse(line);
|
|
50
|
+
if (entry.type === "fix")
|
|
51
|
+
categories.add("error_rate");
|
|
52
|
+
if (entry.type === "feature")
|
|
53
|
+
categories.add("feature_coverage");
|
|
54
|
+
if (entry.files?.some((f) => f.includes("test")))
|
|
55
|
+
categories.add("test_coverage");
|
|
56
|
+
if (entry.files?.some((f) => f.includes("perf") || f.includes("speed")))
|
|
57
|
+
categories.add("performance");
|
|
58
|
+
if (entry.files?.some((f) => f.includes("security") || f.includes("auth")))
|
|
59
|
+
categories.add("security");
|
|
60
|
+
}
|
|
61
|
+
catch { /* skip malformed */ }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ctx.metricCategories = [...categories];
|
|
66
|
+
// File pattern hotspots from training buffer
|
|
67
|
+
const bufferPath = join(projectRoot, ".jfl", "training-buffer.jsonl");
|
|
68
|
+
if (existsSync(bufferPath)) {
|
|
69
|
+
const fileCounts = {};
|
|
70
|
+
const content = readFileSync(bufferPath, "utf-8");
|
|
71
|
+
for (const line of content.split("\n").filter(l => l.trim())) {
|
|
72
|
+
try {
|
|
73
|
+
const entry = JSON.parse(line);
|
|
74
|
+
for (const f of entry.action?.files_affected || []) {
|
|
75
|
+
const dir = f.split("/").slice(0, 2).join("/");
|
|
76
|
+
fileCounts[dir] = (fileCounts[dir] || 0) + 1;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch { /* skip */ }
|
|
80
|
+
}
|
|
81
|
+
ctx.topFilePatterns = Object.entries(fileCounts)
|
|
82
|
+
.sort((a, b) => b[1] - a[1])
|
|
83
|
+
.slice(0, 5)
|
|
84
|
+
.map(([pattern]) => `${pattern}/**`);
|
|
85
|
+
}
|
|
86
|
+
// Readiness score
|
|
87
|
+
let score = 0;
|
|
88
|
+
if (ctx.journalCount >= 20)
|
|
89
|
+
score += 30;
|
|
90
|
+
else if (ctx.journalCount >= 10)
|
|
91
|
+
score += 15;
|
|
92
|
+
if (ctx.sessionCount >= 3)
|
|
93
|
+
score += 20;
|
|
94
|
+
else if (ctx.sessionCount >= 1)
|
|
95
|
+
score += 10;
|
|
96
|
+
if (ctx.hasKnowledge)
|
|
97
|
+
score += 20;
|
|
98
|
+
if (ctx.hasProductRepo)
|
|
99
|
+
score += 20;
|
|
100
|
+
if (ctx.metricCategories.length > 0)
|
|
101
|
+
score += 10;
|
|
102
|
+
ctx.readinessScore = score;
|
|
103
|
+
// Issues
|
|
104
|
+
if (ctx.journalCount < 20)
|
|
105
|
+
ctx.issues.push(`Need 20+ journal entries (have ${ctx.journalCount})`);
|
|
106
|
+
if (ctx.sessionCount < 3)
|
|
107
|
+
ctx.issues.push(`Need 3+ sessions (have ${ctx.sessionCount})`);
|
|
108
|
+
if (!ctx.hasKnowledge)
|
|
109
|
+
ctx.issues.push("No knowledge docs found");
|
|
110
|
+
return ctx;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=context-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-analyzer.js","sourceRoot":"","sources":["../../../src/lib/setup/context-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Audit GTM workspace docs — bifurcated: framework vs customer docs
|
|
3
|
+
*
|
|
4
|
+
* Framework docs: came from templates/skills, compare to upstream, track version drift
|
|
5
|
+
* Customer docs: PRDs, knowledge, custom content — analyze for staleness, token cost, relevance
|
|
6
|
+
*
|
|
7
|
+
* Core insight: "this doc costs you $X per day and adds zero value" > "this doc is long, split it"
|
|
8
|
+
*/
|
|
9
|
+
import type { JournalInsight } from "./smart-recommender.js";
|
|
10
|
+
export type DocOrigin = "framework" | "customer" | "unknown";
|
|
11
|
+
export interface DocState {
|
|
12
|
+
path: string;
|
|
13
|
+
relativePath: string;
|
|
14
|
+
sizeBytes: number;
|
|
15
|
+
lines: number;
|
|
16
|
+
lastModified: Date;
|
|
17
|
+
staleScore: number;
|
|
18
|
+
bloatScore: number;
|
|
19
|
+
relevanceScore: number;
|
|
20
|
+
origin: DocOrigin;
|
|
21
|
+
tokenEstimate: number;
|
|
22
|
+
issues: string[];
|
|
23
|
+
sections: string[];
|
|
24
|
+
todoCount: number;
|
|
25
|
+
deadLinks: string[];
|
|
26
|
+
referenceCount: number;
|
|
27
|
+
}
|
|
28
|
+
export interface DocAuditResult {
|
|
29
|
+
docs: DocState[];
|
|
30
|
+
totalDocs: number;
|
|
31
|
+
totalLines: number;
|
|
32
|
+
totalBytes: number;
|
|
33
|
+
totalTokens: number;
|
|
34
|
+
frameworkDocs: DocState[];
|
|
35
|
+
customerDocs: DocState[];
|
|
36
|
+
staleDocs: DocState[];
|
|
37
|
+
bloatedDocs: DocState[];
|
|
38
|
+
missingDocs: string[];
|
|
39
|
+
unreferencedDocs: DocState[];
|
|
40
|
+
recommendations: DocRecommendation[];
|
|
41
|
+
}
|
|
42
|
+
export interface DocRecommendation {
|
|
43
|
+
type: "trim" | "update" | "create" | "archive" | "split" | "merge" | "refresh" | "dedupe";
|
|
44
|
+
target: string;
|
|
45
|
+
rationale: string;
|
|
46
|
+
priority: number;
|
|
47
|
+
estimatedSavings?: string;
|
|
48
|
+
origin: DocOrigin;
|
|
49
|
+
action?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function auditDocs(projectRoot: string, insight: JournalInsight): DocAuditResult;
|
|
52
|
+
export declare function buildDocAuditPrompt(audit: DocAuditResult, insight: JournalInsight): string;
|
|
53
|
+
export declare function getSmartDocRecommendations(projectRoot: string, insight: JournalInsight): Promise<DocRecommendation[]>;
|
|
54
|
+
//# sourceMappingURL=doc-auditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-auditor.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/doc-auditor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAM5D,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,IAAI,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,SAAS,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,QAAQ,EAAE,CAAA;IACzB,YAAY,EAAE,QAAQ,EAAE,CAAA;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,QAAQ,EAAE,CAAA;IACvB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,gBAAgB,EAAE,QAAQ,EAAE,CAAA;IAC5B,eAAe,EAAE,iBAAiB,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;IACzF,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkDD,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,cAAc,CA0HhB;AAwaD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,cAAc,GACtB,MAAM,CA2CR;AAED,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsC9B"}
|