jfl 0.2.5 → 0.4.2

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.
Files changed (133) hide show
  1. package/README.md +308 -28
  2. package/dist/commands/context-hub.d.ts.map +1 -1
  3. package/dist/commands/context-hub.js +428 -27
  4. package/dist/commands/context-hub.js.map +1 -1
  5. package/dist/commands/eval.d.ts +6 -0
  6. package/dist/commands/eval.d.ts.map +1 -0
  7. package/dist/commands/eval.js +236 -0
  8. package/dist/commands/eval.js.map +1 -0
  9. package/dist/commands/flows.d.ts +4 -1
  10. package/dist/commands/flows.d.ts.map +1 -1
  11. package/dist/commands/flows.js +160 -1
  12. package/dist/commands/flows.js.map +1 -1
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +272 -145
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/peter.d.ts.map +1 -1
  17. package/dist/commands/peter.js +220 -1
  18. package/dist/commands/peter.js.map +1 -1
  19. package/dist/commands/pi.d.ts +21 -0
  20. package/dist/commands/pi.d.ts.map +1 -0
  21. package/dist/commands/pi.js +154 -0
  22. package/dist/commands/pi.js.map +1 -0
  23. package/dist/commands/portfolio.d.ts +6 -0
  24. package/dist/commands/portfolio.d.ts.map +1 -0
  25. package/dist/commands/portfolio.js +249 -0
  26. package/dist/commands/portfolio.js.map +1 -0
  27. package/dist/commands/predict.d.ts +6 -0
  28. package/dist/commands/predict.d.ts.map +1 -0
  29. package/dist/commands/predict.js +234 -0
  30. package/dist/commands/predict.js.map +1 -0
  31. package/dist/commands/scope.d.ts +1 -0
  32. package/dist/commands/scope.d.ts.map +1 -1
  33. package/dist/commands/scope.js +189 -2
  34. package/dist/commands/scope.js.map +1 -1
  35. package/dist/commands/synopsis.d.ts +44 -0
  36. package/dist/commands/synopsis.d.ts.map +1 -1
  37. package/dist/commands/synopsis.js +1 -1
  38. package/dist/commands/synopsis.js.map +1 -1
  39. package/dist/commands/update.d.ts.map +1 -1
  40. package/dist/commands/update.js +49 -1
  41. package/dist/commands/update.js.map +1 -1
  42. package/dist/commands/viz.d.ts +7 -0
  43. package/dist/commands/viz.d.ts.map +1 -0
  44. package/dist/commands/viz.js +460 -0
  45. package/dist/commands/viz.js.map +1 -0
  46. package/dist/commands/voice.js.map +1 -1
  47. package/dist/dashboard/index.d.ts +4 -5
  48. package/dist/dashboard/index.d.ts.map +1 -1
  49. package/dist/dashboard/index.js +57 -119
  50. package/dist/dashboard/index.js.map +1 -1
  51. package/dist/dashboard-static/assets/index-B6kRK9Rq.js +116 -0
  52. package/dist/dashboard-static/assets/index-BpdKJPLu.css +1 -0
  53. package/dist/dashboard-static/index.html +16 -0
  54. package/dist/index.js +120 -20
  55. package/dist/index.js.map +1 -1
  56. package/dist/lib/eval-store.d.ts +15 -0
  57. package/dist/lib/eval-store.d.ts.map +1 -0
  58. package/dist/lib/eval-store.js +179 -0
  59. package/dist/lib/eval-store.js.map +1 -0
  60. package/dist/lib/flow-engine.d.ts +13 -0
  61. package/dist/lib/flow-engine.d.ts.map +1 -1
  62. package/dist/lib/flow-engine.js +164 -3
  63. package/dist/lib/flow-engine.js.map +1 -1
  64. package/dist/lib/hub-client.d.ts +80 -0
  65. package/dist/lib/hub-client.d.ts.map +1 -0
  66. package/dist/lib/hub-client.js +46 -0
  67. package/dist/lib/hub-client.js.map +1 -0
  68. package/dist/lib/predictor.d.ts +99 -0
  69. package/dist/lib/predictor.d.ts.map +1 -0
  70. package/dist/lib/predictor.js +394 -0
  71. package/dist/lib/predictor.js.map +1 -0
  72. package/dist/lib/service-gtm.d.ts +88 -44
  73. package/dist/lib/service-gtm.d.ts.map +1 -1
  74. package/dist/lib/service-gtm.js +451 -243
  75. package/dist/lib/service-gtm.js.map +1 -1
  76. package/dist/lib/telemetry-agent.d.ts +57 -0
  77. package/dist/lib/telemetry-agent.d.ts.map +1 -0
  78. package/dist/lib/telemetry-agent.js +268 -0
  79. package/dist/lib/telemetry-agent.js.map +1 -0
  80. package/dist/lib/telemetry-digest.d.ts.map +1 -1
  81. package/dist/lib/telemetry-digest.js +17 -17
  82. package/dist/lib/telemetry-digest.js.map +1 -1
  83. package/dist/lib/telemetry.d.ts +1 -0
  84. package/dist/lib/telemetry.d.ts.map +1 -1
  85. package/dist/lib/telemetry.js +14 -6
  86. package/dist/lib/telemetry.js.map +1 -1
  87. package/dist/lib/trajectory-loader.d.ts +82 -0
  88. package/dist/lib/trajectory-loader.d.ts.map +1 -0
  89. package/dist/lib/trajectory-loader.js +406 -0
  90. package/dist/lib/trajectory-loader.js.map +1 -0
  91. package/dist/mcp/context-hub-mcp.js +60 -0
  92. package/dist/mcp/context-hub-mcp.js.map +1 -1
  93. package/dist/mcp/service-registry-mcp.js +0 -0
  94. package/dist/types/eval.d.ts +18 -0
  95. package/dist/types/eval.d.ts.map +1 -0
  96. package/dist/types/eval.js +5 -0
  97. package/dist/types/eval.js.map +1 -0
  98. package/dist/types/journal.d.ts +133 -0
  99. package/dist/types/journal.d.ts.map +1 -0
  100. package/dist/types/journal.js +59 -0
  101. package/dist/types/journal.js.map +1 -0
  102. package/dist/types/map.d.ts +1 -1
  103. package/dist/types/map.d.ts.map +1 -1
  104. package/dist/types/map.js.map +1 -1
  105. package/dist/ui/service-dashboard.js.map +1 -1
  106. package/dist/utils/jfl-paths.d.ts +1 -0
  107. package/dist/utils/jfl-paths.d.ts.map +1 -1
  108. package/dist/utils/jfl-paths.js +1 -0
  109. package/dist/utils/jfl-paths.js.map +1 -1
  110. package/dist/utils/wallet.js.map +1 -1
  111. package/package.json +7 -2
  112. package/scripts/generate-changesets.sh +113 -0
  113. package/scripts/migrate-to-branch-sessions.sh +201 -0
  114. package/scripts/pp-branch-pr.sh +115 -0
  115. package/scripts/session/session-cleanup.sh +29 -14
  116. package/scripts/session/session-end.sh +0 -10
  117. package/scripts/session/session-init.sh +0 -16
  118. package/scripts/session/session-sync.sh +0 -10
  119. package/template/.jfl/flows-self-driving.yaml +170 -0
  120. package/template/THEORY.md +26 -0
  121. package/template/scripts/session/session-cleanup.sh +28 -10
  122. package/dist/dashboard/components.d.ts +0 -7
  123. package/dist/dashboard/components.d.ts.map +0 -1
  124. package/dist/dashboard/components.js +0 -163
  125. package/dist/dashboard/components.js.map +0 -1
  126. package/dist/dashboard/pages.d.ts +0 -7
  127. package/dist/dashboard/pages.d.ts.map +0 -1
  128. package/dist/dashboard/pages.js +0 -742
  129. package/dist/dashboard/pages.js.map +0 -1
  130. package/dist/dashboard/styles.d.ts +0 -7
  131. package/dist/dashboard/styles.d.ts.map +0 -1
  132. package/dist/dashboard/styles.js +0 -497
  133. package/dist/dashboard/styles.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @purpose Portfolio workspace management — register, list, and inspect child GTMs
3
+ */
4
+ import { Command } from "commander";
5
+ export declare function registerPortfolioCommand(program: Command): void;
6
+ //# sourceMappingURL=portfolio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0CnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuP/D"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * @purpose Portfolio workspace management — register, list, and inspect child GTMs
3
+ */
4
+ import * as fs from "fs";
5
+ import * as path from "path";
6
+ import chalk from "chalk";
7
+ import { execSync } from "child_process";
8
+ import { getRegisteredServices, phoneHomeToPortfolio, } from "../lib/service-gtm.js";
9
+ function findProjectRoot() {
10
+ let dir = process.cwd();
11
+ while (dir !== path.dirname(dir)) {
12
+ if (fs.existsSync(path.join(dir, ".jfl", "config.json")))
13
+ return dir;
14
+ dir = path.dirname(dir);
15
+ }
16
+ return process.cwd();
17
+ }
18
+ function loadConfig(root) {
19
+ const configPath = path.join(root, ".jfl", "config.json");
20
+ if (!fs.existsSync(configPath))
21
+ return null;
22
+ try {
23
+ return JSON.parse(fs.readFileSync(configPath, "utf-8"));
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ function requirePortfolio(root) {
30
+ const config = loadConfig(root);
31
+ if (!config || config.type !== "portfolio") {
32
+ console.log(chalk.red("Not a portfolio workspace. Run from a portfolio directory or use 'jfl init' to create one."));
33
+ process.exit(1);
34
+ }
35
+ return config;
36
+ }
37
+ export function registerPortfolioCommand(program) {
38
+ const portfolio = program
39
+ .command("portfolio")
40
+ .description("Manage portfolio of GTM workspaces");
41
+ portfolio
42
+ .command("register <path>")
43
+ .description("Register a GTM workspace in this portfolio")
44
+ .action(async (gtmPath) => {
45
+ const root = findProjectRoot();
46
+ const config = requirePortfolio(root);
47
+ const resolvedPath = path.resolve(gtmPath);
48
+ if (!fs.existsSync(resolvedPath)) {
49
+ console.log(chalk.red(`Path does not exist: ${resolvedPath}`));
50
+ return;
51
+ }
52
+ const gtmConfigPath = path.join(resolvedPath, ".jfl", "config.json");
53
+ if (!fs.existsSync(gtmConfigPath)) {
54
+ console.log(chalk.red(`No .jfl/config.json found at ${resolvedPath}`));
55
+ return;
56
+ }
57
+ let gtmConfig;
58
+ try {
59
+ gtmConfig = JSON.parse(fs.readFileSync(gtmConfigPath, "utf-8"));
60
+ }
61
+ catch {
62
+ console.log(chalk.red("Invalid config.json"));
63
+ return;
64
+ }
65
+ if (gtmConfig.type !== "gtm") {
66
+ console.log(chalk.red(`Expected type "gtm", got "${gtmConfig.type}"`));
67
+ return;
68
+ }
69
+ if (!config.registered_services)
70
+ config.registered_services = [];
71
+ const existing = config.registered_services.find(s => s.name === gtmConfig.name);
72
+ if (existing) {
73
+ console.log(chalk.yellow(`${gtmConfig.name} already registered. Updating.`));
74
+ existing.path = resolvedPath;
75
+ existing.status = "active";
76
+ }
77
+ else {
78
+ const serviceCount = getRegisteredServices(resolvedPath).length;
79
+ config.registered_services.push({
80
+ name: gtmConfig.name,
81
+ path: resolvedPath,
82
+ type: "gtm",
83
+ registered_at: new Date().toISOString(),
84
+ status: "active",
85
+ context_scope: gtmConfig.context_scope,
86
+ });
87
+ console.log(chalk.green(`Registered: ${gtmConfig.name} (${serviceCount} services)`));
88
+ }
89
+ // Write updated portfolio config
90
+ const portfolioConfigPath = path.join(root, ".jfl", "config.json");
91
+ fs.writeFileSync(portfolioConfigPath, JSON.stringify(config, null, 2));
92
+ // Write portfolio_parent back to child GTM
93
+ gtmConfig.portfolio_parent = root;
94
+ fs.writeFileSync(gtmConfigPath, JSON.stringify(gtmConfig, null, 2));
95
+ console.log(chalk.green(`Portfolio link established`));
96
+ });
97
+ portfolio
98
+ .command("list")
99
+ .description("List registered GTM workspaces")
100
+ .action(async () => {
101
+ const root = findProjectRoot();
102
+ const config = requirePortfolio(root);
103
+ const children = config.registered_services ?? [];
104
+ if (children.length === 0) {
105
+ console.log(chalk.yellow("No GTMs registered. Use 'jfl portfolio register <path>' to add one."));
106
+ return;
107
+ }
108
+ console.log(chalk.bold(`\n Portfolio: ${config.name}\n`));
109
+ const header = ` ${"Name".padEnd(25)} ${"Type".padEnd(8)} ${"Services".padEnd(10)} ${"Status".padEnd(10)} Path`;
110
+ const separator = ` ${"─".repeat(25)} ${"─".repeat(8)} ${"─".repeat(10)} ${"─".repeat(10)} ${"─".repeat(30)}`;
111
+ console.log(chalk.dim(header));
112
+ console.log(chalk.dim(separator));
113
+ for (const child of children) {
114
+ const exists = fs.existsSync(child.path);
115
+ let serviceCount = "—";
116
+ if (exists) {
117
+ const childServices = getRegisteredServices(child.path);
118
+ serviceCount = String(childServices.length);
119
+ }
120
+ const statusColor = child.status === "active" && exists ? chalk.green : chalk.red;
121
+ const status = exists ? child.status : "missing";
122
+ console.log(` ${child.name.padEnd(25)} ${(child.type || "gtm").padEnd(8)} ${serviceCount.padEnd(10)} ${statusColor(status.padEnd(10))} ${chalk.dim(child.path)}`);
123
+ }
124
+ console.log();
125
+ });
126
+ portfolio
127
+ .command("unregister <name>")
128
+ .description("Remove a GTM workspace from this portfolio")
129
+ .action(async (name) => {
130
+ const root = findProjectRoot();
131
+ const config = requirePortfolio(root);
132
+ const children = config.registered_services ?? [];
133
+ const idx = children.findIndex(s => s.name === name);
134
+ if (idx === -1) {
135
+ console.log(chalk.red(`"${name}" is not registered in this portfolio.`));
136
+ return;
137
+ }
138
+ const child = children[idx];
139
+ // Remove portfolio_parent from child GTM config
140
+ if (fs.existsSync(child.path)) {
141
+ const childConfigPath = path.join(child.path, ".jfl", "config.json");
142
+ if (fs.existsSync(childConfigPath)) {
143
+ try {
144
+ const childConfig = JSON.parse(fs.readFileSync(childConfigPath, "utf-8"));
145
+ delete childConfig.portfolio_parent;
146
+ fs.writeFileSync(childConfigPath, JSON.stringify(childConfig, null, 2));
147
+ }
148
+ catch { }
149
+ }
150
+ }
151
+ children.splice(idx, 1);
152
+ config.registered_services = children;
153
+ const portfolioConfigPath = path.join(root, ".jfl", "config.json");
154
+ fs.writeFileSync(portfolioConfigPath, JSON.stringify(config, null, 2));
155
+ console.log(chalk.green(`Unregistered: ${name}`));
156
+ });
157
+ portfolio
158
+ .command("status")
159
+ .description("Portfolio health and eval summary")
160
+ .action(async () => {
161
+ const root = findProjectRoot();
162
+ const config = requirePortfolio(root);
163
+ const children = config.registered_services ?? [];
164
+ console.log(chalk.bold(`\n Portfolio: ${config.name}`));
165
+ console.log(chalk.dim(` ${children.length} GTM workspaces\n`));
166
+ // Check eval data
167
+ const evalPath = path.join(root, ".jfl", "eval.jsonl");
168
+ let evalCount = 0;
169
+ const agentSet = new Set();
170
+ if (fs.existsSync(evalPath)) {
171
+ const lines = fs.readFileSync(evalPath, "utf-8").split("\n").filter(l => l.trim());
172
+ for (const line of lines) {
173
+ try {
174
+ const entry = JSON.parse(line);
175
+ evalCount++;
176
+ if (entry.agent)
177
+ agentSet.add(entry.agent);
178
+ }
179
+ catch { }
180
+ }
181
+ }
182
+ console.log(` Eval entries: ${evalCount}`);
183
+ console.log(` Agents tracked: ${[...agentSet].join(", ") || "none"}`);
184
+ // Child status
185
+ console.log(chalk.bold("\n Child GTMs:\n"));
186
+ for (const child of children) {
187
+ const exists = fs.existsSync(child.path);
188
+ const icon = exists ? chalk.green("●") : chalk.red("●");
189
+ let detail = "";
190
+ if (exists) {
191
+ const childServices = getRegisteredServices(child.path);
192
+ detail = chalk.dim(`${childServices.length} services`);
193
+ const childEvalPath = path.join(child.path, ".jfl", "eval.jsonl");
194
+ if (fs.existsSync(childEvalPath)) {
195
+ const evals = fs.readFileSync(childEvalPath, "utf-8").split("\n").filter(l => l.trim()).length;
196
+ detail += chalk.dim(`, ${evals} evals`);
197
+ }
198
+ }
199
+ else {
200
+ detail = chalk.red("path missing");
201
+ }
202
+ console.log(` ${icon} ${child.name} ${detail}`);
203
+ }
204
+ console.log();
205
+ });
206
+ portfolio
207
+ .command("phone-home")
208
+ .description("Sync this GTM's journals and activity to its portfolio parent")
209
+ .action(async () => {
210
+ const root = findProjectRoot();
211
+ const config = loadConfig(root);
212
+ if (!config) {
213
+ console.log(chalk.red("No .jfl/config.json found."));
214
+ return;
215
+ }
216
+ const portfolioPath = config.portfolio_parent;
217
+ if (!portfolioPath) {
218
+ console.log(chalk.yellow("No portfolio_parent configured. This GTM is not part of a portfolio."));
219
+ return;
220
+ }
221
+ if (!fs.existsSync(portfolioPath)) {
222
+ console.log(chalk.red(`Portfolio parent path not found: ${portfolioPath}`));
223
+ return;
224
+ }
225
+ let sessionBranch = "main";
226
+ try {
227
+ sessionBranch = execSync("git branch --show-current", {
228
+ cwd: root,
229
+ encoding: "utf-8",
230
+ }).trim() || "main";
231
+ }
232
+ catch { }
233
+ try {
234
+ const result = await phoneHomeToPortfolio(root, portfolioPath, sessionBranch);
235
+ console.log(chalk.green(`Synced to portfolio: ${path.basename(portfolioPath)}`));
236
+ console.log(chalk.dim(` GTM: ${result.gtm_name}`));
237
+ console.log(chalk.dim(` Journal entries synced: ${result.journal.entry_count}`));
238
+ console.log(chalk.dim(` Commits: ${result.git.commits.length}`));
239
+ console.log(chalk.dim(` Files changed: ${result.git.files_changed}`));
240
+ if (result.errors.length > 0) {
241
+ console.log(chalk.yellow(` Warnings: ${result.errors.join(", ")}`));
242
+ }
243
+ }
244
+ catch (error) {
245
+ console.log(chalk.red(`Phone-home failed: ${error.message}`));
246
+ }
247
+ });
248
+ }
249
+ //# sourceMappingURL=portfolio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/commands/portfolio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @purpose CLI commands for prediction engine — predict eval deltas, resolve actuals, view accuracy
3
+ */
4
+ import type { Command } from "commander";
5
+ export declare function registerPredictCommand(program: Command): void;
6
+ //# sourceMappingURL=predict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predict.d.ts","sourceRoot":"","sources":["../../src/commands/predict.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmOxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmD7D"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * @purpose CLI commands for prediction engine — predict eval deltas, resolve actuals, view accuracy
3
+ */
4
+ import chalk from "chalk";
5
+ import { Predictor } from "../lib/predictor.js";
6
+ import { sparkline } from "../lib/kuva.js";
7
+ function formatTable(headers, rows) {
8
+ const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map(r => (r[i] || "").length)));
9
+ const lines = [];
10
+ lines.push(" " + headers.map((h, i) => h.padEnd(colWidths[i])).join(" "));
11
+ lines.push(" " + colWidths.map(w => "─".repeat(w)).join(" "));
12
+ for (const row of rows) {
13
+ lines.push(" " + row.map((c, i) => (c || "").padEnd(colWidths[i])).join(" "));
14
+ }
15
+ return lines.join("\n");
16
+ }
17
+ function colorDelta(delta) {
18
+ const sign = delta >= 0 ? "+" : "";
19
+ const str = `${sign}${delta.toFixed(4)}`;
20
+ if (delta > 0)
21
+ return chalk.green(str);
22
+ if (delta < 0)
23
+ return chalk.red(str);
24
+ return chalk.gray(str);
25
+ }
26
+ function colorRecommendation(rec) {
27
+ switch (rec) {
28
+ case "proceed": return chalk.green(rec);
29
+ case "revise": return chalk.yellow(rec);
30
+ case "abandon": return chalk.red(rec);
31
+ default: return rec;
32
+ }
33
+ }
34
+ function colorSeverity(severity) {
35
+ switch (severity) {
36
+ case "low": return chalk.gray(`[${severity}]`);
37
+ case "medium": return chalk.yellow(`[${severity}]`);
38
+ case "high": return chalk.red(`[${severity}]`);
39
+ default: return `[${severity}]`;
40
+ }
41
+ }
42
+ function colorConfidence(confidence) {
43
+ const pct = `${Math.round(confidence * 100)}%`;
44
+ if (confidence >= 0.7)
45
+ return chalk.green(pct);
46
+ if (confidence >= 0.4)
47
+ return chalk.yellow(pct);
48
+ return chalk.red(pct);
49
+ }
50
+ async function predictCommand(options) {
51
+ if (!process.env.STRATUS_API_KEY) {
52
+ console.error(chalk.red("\n STRATUS_API_KEY not set."));
53
+ console.error(chalk.gray(" export STRATUS_API_KEY=stratus_sk_live_...\n"));
54
+ process.exit(1);
55
+ }
56
+ const currentScore = parseFloat(options.score ?? "0");
57
+ if (isNaN(currentScore)) {
58
+ console.error(chalk.red("\n --score must be a number\n"));
59
+ process.exit(1);
60
+ }
61
+ const proposal = {
62
+ description: options.proposal,
63
+ change_type: options.type || "fix",
64
+ scope: options.scope || "medium",
65
+ files_affected: options.files ? options.files.split(",").map(f => f.trim()) : undefined,
66
+ };
67
+ const failingEvals = options.failingEvals
68
+ ? options.failingEvals.split(",").map(e => e.trim())
69
+ : undefined;
70
+ const input = {
71
+ proposal,
72
+ current_score: currentScore,
73
+ failing_evals: failingEvals,
74
+ goal: options.goal,
75
+ recent_trajectory: [],
76
+ };
77
+ const predictor = new Predictor();
78
+ console.log(chalk.gray("\n Querying Stratus (rollout + chat)...\n"));
79
+ try {
80
+ const result = await predictor.predict(input);
81
+ console.log(chalk.bold(" Prediction\n"));
82
+ console.log(chalk.gray(" Proposal: ") + result.reasoning.split(".")[0]);
83
+ console.log(chalk.gray(" Current: ") + currentScore.toFixed(4));
84
+ console.log(chalk.gray(" Predicted: ") + `${result.predicted_score.toFixed(4)} (${colorDelta(result.predicted_delta)})`);
85
+ console.log(chalk.gray(" Confidence: ") + colorConfidence(result.confidence));
86
+ console.log();
87
+ console.log(chalk.gray(" Recommendation: ") + colorRecommendation(result.recommendation));
88
+ console.log();
89
+ console.log(chalk.gray(" Reasoning: ") + result.reasoning);
90
+ if (result.risks.length > 0) {
91
+ console.log();
92
+ console.log(chalk.gray(" Risks:"));
93
+ for (const risk of result.risks) {
94
+ console.log(` ${colorSeverity(risk.severity)} ${risk.description}`);
95
+ }
96
+ }
97
+ console.log();
98
+ console.log(chalk.gray(" Brain Goal Proximity: ") + result.brain_goal_proximity.toFixed(4));
99
+ console.log(chalk.gray(" Method: ") + result.method + (result.method === "ensemble" ? " (rollout + chat)" : ""));
100
+ console.log();
101
+ console.log(chalk.gray(" ID: ") + chalk.cyan(result.prediction_id) + chalk.gray(" (use to resolve later)"));
102
+ console.log();
103
+ }
104
+ catch (err) {
105
+ console.error(chalk.red(`\n Prediction failed: ${err.message}\n`));
106
+ process.exit(1);
107
+ }
108
+ }
109
+ async function resolveCommand(options) {
110
+ const actualDelta = parseFloat(options.actualDelta);
111
+ const actualScore = parseFloat(options.actualScore);
112
+ if (isNaN(actualDelta) || isNaN(actualScore)) {
113
+ console.error(chalk.red("\n --actual-delta and --actual-score must be numbers\n"));
114
+ process.exit(1);
115
+ }
116
+ const predictor = new Predictor();
117
+ try {
118
+ await predictor.resolve(options.resolve, actualDelta, actualScore, options.evalRun);
119
+ console.log(chalk.green(`\n Resolved prediction ${chalk.cyan(options.resolve)}`));
120
+ console.log(chalk.gray(` Actual delta: ${colorDelta(actualDelta)}`));
121
+ console.log(chalk.gray(` Actual score: ${actualScore.toFixed(4)}`));
122
+ console.log(chalk.gray(` Eval run: ${options.evalRun}\n`));
123
+ }
124
+ catch (err) {
125
+ console.error(chalk.red(`\n Resolve failed: ${err.message}\n`));
126
+ process.exit(1);
127
+ }
128
+ }
129
+ async function accuracyCommand() {
130
+ const predictor = new Predictor();
131
+ const stats = predictor.getAccuracy();
132
+ console.log(chalk.bold("\n Prediction Accuracy\n"));
133
+ if (stats.resolved === 0) {
134
+ console.log(chalk.gray(" No resolved predictions yet."));
135
+ console.log(chalk.gray(" Resolve with: jfl predict --resolve <id> --actual-delta <n> --actual-score <n> --eval-run <id>\n"));
136
+ if (stats.total > 0) {
137
+ console.log(chalk.gray(` ${stats.total} pending prediction(s)\n`));
138
+ }
139
+ return;
140
+ }
141
+ console.log(chalk.gray(" Total predictions: ") + stats.total);
142
+ console.log(chalk.gray(" Resolved: ") + stats.resolved);
143
+ console.log(chalk.gray(" Direction accuracy: ") + colorConfidence(stats.direction_accuracy));
144
+ console.log(chalk.gray(" Mean delta error: ") + stats.mean_delta_error.toFixed(4));
145
+ console.log(chalk.gray(" Calibration: ") + colorConfidence(stats.calibration));
146
+ console.log();
147
+ }
148
+ async function historyCommand(options) {
149
+ const predictor = new Predictor();
150
+ const limit = parseInt(options.limit ?? "20", 10);
151
+ const records = predictor.getHistory(limit);
152
+ if (records.length === 0) {
153
+ console.log(chalk.gray("\n No predictions yet.\n"));
154
+ console.log(chalk.gray(' Create one: jfl predict --proposal "..." --goal "..."\n'));
155
+ return;
156
+ }
157
+ console.log(chalk.bold(`\n Prediction History (last ${records.length})\n`));
158
+ const headers = ["Time", "ID", "Type", "Predicted", "Actual", "Rec", "Method"];
159
+ const rows = records.map(r => {
160
+ const time = r.ts.replace("T", " ").slice(0, 16);
161
+ const predicted = `${r.prediction.delta >= 0 ? "+" : ""}${r.prediction.delta.toFixed(4)}`;
162
+ const actual = r.actual
163
+ ? `${r.actual.delta >= 0 ? "+" : ""}${r.actual.delta.toFixed(4)}`
164
+ : "pending";
165
+ return [
166
+ time,
167
+ r.prediction_id,
168
+ r.proposal.change_type,
169
+ predicted,
170
+ actual,
171
+ r.prediction.recommendation,
172
+ r.prediction.method,
173
+ ];
174
+ });
175
+ console.log(formatTable(headers, rows));
176
+ const deltas = records.map(r => r.prediction.delta);
177
+ if (deltas.length > 1) {
178
+ console.log(chalk.gray(`\n Predicted deltas: ${sparkline(deltas)}`));
179
+ }
180
+ const resolved = records.filter(r => r.actual !== null);
181
+ if (resolved.length > 0) {
182
+ const dirCorrect = resolved.filter(r => r.accuracy?.direction_correct).length;
183
+ console.log(chalk.gray(` Direction accuracy: ${dirCorrect}/${resolved.length} (${Math.round(dirCorrect / resolved.length * 100)}%)`));
184
+ }
185
+ console.log();
186
+ }
187
+ export function registerPredictCommand(program) {
188
+ const predictCmd = program
189
+ .command("predict")
190
+ .description("Predict eval score delta before executing changes (Stratus world model)");
191
+ predictCmd
192
+ .command("run")
193
+ .description("Generate a prediction for a proposed change")
194
+ .requiredOption("--proposal <text>", "Description of the proposed change")
195
+ .requiredOption("--goal <text>", "Goal expression (e.g. 'test_pass_rate > 0.9')")
196
+ .option("--score <n>", "Current composite score", "0")
197
+ .option("--type <type>", "Change type: fix, refactor, feature, config", "fix")
198
+ .option("--scope <scope>", "Change scope: small, medium, large", "medium")
199
+ .option("--files <list>", "Comma-separated affected files")
200
+ .option("--failing-evals <list>", "Comma-separated failing eval names")
201
+ .action(predictCommand);
202
+ predictCmd
203
+ .command("resolve")
204
+ .description("Resolve a prediction with actual results")
205
+ .requiredOption("--id <prediction_id>", "Prediction ID to resolve")
206
+ .requiredOption("--actual-delta <n>", "Actual score delta")
207
+ .requiredOption("--actual-score <n>", "Actual final score")
208
+ .requiredOption("--eval-run <id>", "Eval run ID")
209
+ .action((options) => resolveCommand({
210
+ resolve: options.id,
211
+ actualDelta: options.actualDelta,
212
+ actualScore: options.actualScore,
213
+ evalRun: options.evalRun,
214
+ }));
215
+ predictCmd
216
+ .command("accuracy")
217
+ .description("Show prediction accuracy statistics")
218
+ .action(accuracyCommand);
219
+ predictCmd
220
+ .command("history")
221
+ .description("Show recent predictions")
222
+ .option("--limit <n>", "Max entries to show", "20")
223
+ .action(historyCommand);
224
+ predictCmd.action(async () => {
225
+ console.log(chalk.bold("\n Stratus Prediction Engine\n"));
226
+ console.log(chalk.gray(" Commands:"));
227
+ console.log(chalk.gray(' jfl predict run --proposal "..." --goal "..." Generate prediction'));
228
+ console.log(chalk.gray(" jfl predict resolve --id <id> ... Resolve with actuals"));
229
+ console.log(chalk.gray(" jfl predict accuracy Show accuracy stats"));
230
+ console.log(chalk.gray(" jfl predict history Recent predictions"));
231
+ console.log();
232
+ });
233
+ }
234
+ //# sourceMappingURL=predict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predict.js","sourceRoot":"","sources":["../../src/commands/predict.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@
3
3
  *
4
4
  * @purpose CLI commands to view, set, and test context scope declarations
5
5
  */
6
+ export declare function matchScopePattern(pattern: string, value: string): boolean;
6
7
  export declare function scopeCommand(action?: string, ...args: string[]): Promise<void>;
7
8
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/commands/scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8NH,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpF"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/commands/scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoNH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQzE;AA0ND,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCpF"}