jfl 0.8.1 โ†’ 0.9.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.
Files changed (296) hide show
  1. package/README.md +35 -4
  2. package/dist/commands/digest.d.ts +6 -0
  3. package/dist/commands/digest.d.ts.map +1 -1
  4. package/dist/commands/digest.js +70 -69
  5. package/dist/commands/digest.js.map +1 -1
  6. package/dist/commands/doctor.d.ts +1 -0
  7. package/dist/commands/doctor.d.ts.map +1 -1
  8. package/dist/commands/doctor.js +30 -1
  9. package/dist/commands/doctor.js.map +1 -1
  10. package/dist/commands/eval.d.ts +40 -0
  11. package/dist/commands/eval.d.ts.map +1 -1
  12. package/dist/commands/eval.js +8 -8
  13. package/dist/commands/eval.js.map +1 -1
  14. package/dist/commands/findings.d.ts +7 -0
  15. package/dist/commands/findings.d.ts.map +1 -1
  16. package/dist/commands/findings.js +4 -4
  17. package/dist/commands/findings.js.map +1 -1
  18. package/dist/commands/ide.d.ts +2 -1
  19. package/dist/commands/ide.d.ts.map +1 -1
  20. package/dist/commands/ide.js +61 -1
  21. package/dist/commands/ide.js.map +1 -1
  22. package/dist/commands/init-from-service.d.ts +15 -0
  23. package/dist/commands/init-from-service.d.ts.map +1 -0
  24. package/dist/commands/init-from-service.js +541 -0
  25. package/dist/commands/init-from-service.js.map +1 -0
  26. package/dist/commands/init.d.ts +1 -0
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +32 -1
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/kanban.d.ts.map +1 -1
  31. package/dist/commands/kanban.js +13 -4
  32. package/dist/commands/kanban.js.map +1 -1
  33. package/dist/commands/linear.d.ts +41 -0
  34. package/dist/commands/linear.d.ts.map +1 -0
  35. package/dist/commands/linear.js +715 -0
  36. package/dist/commands/linear.js.map +1 -0
  37. package/dist/commands/peter.d.ts.map +1 -1
  38. package/dist/commands/peter.js +232 -25
  39. package/dist/commands/peter.js.map +1 -1
  40. package/dist/commands/portfolio.d.ts +5 -0
  41. package/dist/commands/portfolio.d.ts.map +1 -1
  42. package/dist/commands/portfolio.js +193 -203
  43. package/dist/commands/portfolio.js.map +1 -1
  44. package/dist/commands/predict.d.ts +19 -0
  45. package/dist/commands/predict.d.ts.map +1 -1
  46. package/dist/commands/predict.js +4 -4
  47. package/dist/commands/predict.js.map +1 -1
  48. package/dist/commands/services.d.ts.map +1 -1
  49. package/dist/commands/services.js +146 -0
  50. package/dist/commands/services.js.map +1 -1
  51. package/dist/commands/setup.d.ts.map +1 -1
  52. package/dist/commands/setup.js +279 -20
  53. package/dist/commands/setup.js.map +1 -1
  54. package/dist/commands/start.d.ts +25 -0
  55. package/dist/commands/start.d.ts.map +1 -0
  56. package/dist/commands/start.js +191 -0
  57. package/dist/commands/start.js.map +1 -0
  58. package/dist/commands/telemetry-monitor.d.ts +11 -0
  59. package/dist/commands/telemetry-monitor.d.ts.map +1 -0
  60. package/dist/commands/telemetry-monitor.js +224 -0
  61. package/dist/commands/telemetry-monitor.js.map +1 -0
  62. package/dist/commands/telemetry-test.d.ts +11 -0
  63. package/dist/commands/telemetry-test.d.ts.map +1 -0
  64. package/dist/commands/telemetry-test.js +67 -0
  65. package/dist/commands/telemetry-test.js.map +1 -0
  66. package/dist/commands/tenet-agents.d.ts +13 -0
  67. package/dist/commands/tenet-agents.d.ts.map +1 -0
  68. package/dist/commands/tenet-agents.js +191 -0
  69. package/dist/commands/tenet-agents.js.map +1 -0
  70. package/dist/commands/tenet-setup.d.ts +20 -0
  71. package/dist/commands/tenet-setup.d.ts.map +1 -0
  72. package/dist/commands/tenet-setup.js +135 -0
  73. package/dist/commands/tenet-setup.js.map +1 -0
  74. package/dist/commands/train.d.ts +18 -0
  75. package/dist/commands/train.d.ts.map +1 -1
  76. package/dist/commands/train.js +182 -0
  77. package/dist/commands/train.js.map +1 -1
  78. package/dist/commands/viz.d.ts +33 -0
  79. package/dist/commands/viz.d.ts.map +1 -1
  80. package/dist/commands/viz.js +9 -9
  81. package/dist/commands/viz.js.map +1 -1
  82. package/dist/commands/whoami.d.ts +2 -0
  83. package/dist/commands/whoami.d.ts.map +1 -0
  84. package/dist/commands/whoami.js +24 -0
  85. package/dist/commands/whoami.js.map +1 -0
  86. package/dist/index.js +230 -30
  87. package/dist/index.js.map +1 -1
  88. package/dist/lib/advanced-setup.d.ts +78 -0
  89. package/dist/lib/advanced-setup.d.ts.map +1 -0
  90. package/dist/lib/advanced-setup.js +433 -0
  91. package/dist/lib/advanced-setup.js.map +1 -0
  92. package/dist/lib/agent-config.d.ts +33 -0
  93. package/dist/lib/agent-config.d.ts.map +1 -1
  94. package/dist/lib/agent-config.js +26 -0
  95. package/dist/lib/agent-config.js.map +1 -1
  96. package/dist/lib/counterfactual-training-bridge.d.ts +114 -0
  97. package/dist/lib/counterfactual-training-bridge.d.ts.map +1 -0
  98. package/dist/lib/counterfactual-training-bridge.js +322 -0
  99. package/dist/lib/counterfactual-training-bridge.js.map +1 -0
  100. package/dist/lib/discovery-agent.d.ts +48 -0
  101. package/dist/lib/discovery-agent.d.ts.map +1 -0
  102. package/dist/lib/discovery-agent.js +111 -0
  103. package/dist/lib/discovery-agent.js.map +1 -0
  104. package/dist/lib/flow-engine.d.ts.map +1 -1
  105. package/dist/lib/flow-engine.js +46 -8
  106. package/dist/lib/flow-engine.js.map +1 -1
  107. package/dist/lib/gtm-generator.d.ts +29 -0
  108. package/dist/lib/gtm-generator.d.ts.map +1 -0
  109. package/dist/lib/gtm-generator.js +252 -0
  110. package/dist/lib/gtm-generator.js.map +1 -0
  111. package/dist/lib/hub-health.d.ts +40 -0
  112. package/dist/lib/hub-health.d.ts.map +1 -0
  113. package/dist/lib/hub-health.js +89 -0
  114. package/dist/lib/hub-health.js.map +1 -0
  115. package/dist/lib/invariant-monitor.d.ts +6 -2
  116. package/dist/lib/invariant-monitor.d.ts.map +1 -1
  117. package/dist/lib/invariant-monitor.js +89 -2
  118. package/dist/lib/invariant-monitor.js.map +1 -1
  119. package/dist/lib/journal-analyzer.d.ts +71 -0
  120. package/dist/lib/journal-analyzer.d.ts.map +1 -0
  121. package/dist/lib/journal-analyzer.js +306 -0
  122. package/dist/lib/journal-analyzer.js.map +1 -0
  123. package/dist/lib/linear-client.d.ts +73 -0
  124. package/dist/lib/linear-client.d.ts.map +1 -0
  125. package/dist/lib/linear-client.js +112 -0
  126. package/dist/lib/linear-client.js.map +1 -0
  127. package/dist/lib/linear-id-map.d.ts +20 -0
  128. package/dist/lib/linear-id-map.d.ts.map +1 -0
  129. package/dist/lib/linear-id-map.js +59 -0
  130. package/dist/lib/linear-id-map.js.map +1 -0
  131. package/dist/lib/linear-kanban.d.ts +66 -0
  132. package/dist/lib/linear-kanban.d.ts.map +1 -0
  133. package/dist/lib/linear-kanban.js +175 -0
  134. package/dist/lib/linear-kanban.js.map +1 -0
  135. package/dist/lib/onboarding.d.ts +40 -0
  136. package/dist/lib/onboarding.d.ts.map +1 -0
  137. package/dist/lib/onboarding.js +213 -0
  138. package/dist/lib/onboarding.js.map +1 -0
  139. package/dist/lib/physical-world-model.d.ts +50 -0
  140. package/dist/lib/physical-world-model.d.ts.map +1 -0
  141. package/dist/lib/physical-world-model.js +251 -0
  142. package/dist/lib/physical-world-model.js.map +1 -0
  143. package/dist/lib/planning-loop.d.ts +157 -0
  144. package/dist/lib/planning-loop.d.ts.map +1 -0
  145. package/dist/lib/planning-loop.js +537 -0
  146. package/dist/lib/planning-loop.js.map +1 -0
  147. package/dist/lib/policy-head.d.ts +13 -0
  148. package/dist/lib/policy-head.d.ts.map +1 -1
  149. package/dist/lib/policy-head.js +168 -2
  150. package/dist/lib/policy-head.js.map +1 -1
  151. package/dist/lib/resource-optimizer-middleware.d.ts +39 -0
  152. package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -0
  153. package/dist/lib/resource-optimizer-middleware.js +222 -0
  154. package/dist/lib/resource-optimizer-middleware.js.map +1 -0
  155. package/dist/lib/resource-optimizer.d.ts +71 -0
  156. package/dist/lib/resource-optimizer.d.ts.map +1 -0
  157. package/dist/lib/resource-optimizer.js +228 -0
  158. package/dist/lib/resource-optimizer.js.map +1 -0
  159. package/dist/lib/rl-manager.d.ts +74 -0
  160. package/dist/lib/rl-manager.d.ts.map +1 -0
  161. package/dist/lib/rl-manager.js +245 -0
  162. package/dist/lib/rl-manager.js.map +1 -0
  163. package/dist/lib/service-analyzer.d.ts +76 -0
  164. package/dist/lib/service-analyzer.d.ts.map +1 -0
  165. package/dist/lib/service-analyzer.js +704 -0
  166. package/dist/lib/service-analyzer.js.map +1 -0
  167. package/dist/lib/service-gtm.js +2 -2
  168. package/dist/lib/service-gtm.js.map +1 -1
  169. package/dist/lib/service-questionnaire.d.ts +11 -0
  170. package/dist/lib/service-questionnaire.d.ts.map +1 -0
  171. package/dist/lib/service-questionnaire.js +89 -0
  172. package/dist/lib/service-questionnaire.js.map +1 -0
  173. package/dist/lib/setup/agent-generator.d.ts +2 -0
  174. package/dist/lib/setup/agent-generator.d.ts.map +1 -1
  175. package/dist/lib/setup/agent-generator.js +128 -4
  176. package/dist/lib/setup/agent-generator.js.map +1 -1
  177. package/dist/lib/setup/flow-generator.d.ts +10 -0
  178. package/dist/lib/setup/flow-generator.d.ts.map +1 -0
  179. package/dist/lib/setup/flow-generator.js +113 -0
  180. package/dist/lib/setup/flow-generator.js.map +1 -0
  181. package/dist/lib/setup/invariant-bridge.d.ts +91 -0
  182. package/dist/lib/setup/invariant-bridge.d.ts.map +1 -0
  183. package/dist/lib/setup/invariant-bridge.js +384 -0
  184. package/dist/lib/setup/invariant-bridge.js.map +1 -0
  185. package/dist/lib/setup/spec-generator.d.ts +41 -5
  186. package/dist/lib/setup/spec-generator.d.ts.map +1 -1
  187. package/dist/lib/setup/spec-generator.js +503 -29
  188. package/dist/lib/setup/spec-generator.js.map +1 -1
  189. package/dist/lib/setup/starter-intelligence.d.ts +25 -0
  190. package/dist/lib/setup/starter-intelligence.d.ts.map +1 -0
  191. package/dist/lib/setup/starter-intelligence.js +309 -0
  192. package/dist/lib/setup/starter-intelligence.js.map +1 -0
  193. package/dist/lib/stratus-client.js +1 -1
  194. package/dist/lib/stratus-client.js.map +1 -1
  195. package/dist/lib/surface-agent.d.ts +78 -0
  196. package/dist/lib/surface-agent.d.ts.map +1 -0
  197. package/dist/lib/surface-agent.js +105 -0
  198. package/dist/lib/surface-agent.js.map +1 -0
  199. package/dist/lib/surface-coordination-example.d.ts +30 -0
  200. package/dist/lib/surface-coordination-example.d.ts.map +1 -0
  201. package/dist/lib/surface-coordination-example.js +164 -0
  202. package/dist/lib/surface-coordination-example.js.map +1 -0
  203. package/dist/lib/telemetry/physical-world-collector.d.ts +15 -0
  204. package/dist/lib/telemetry/physical-world-collector.d.ts.map +1 -0
  205. package/dist/lib/telemetry/physical-world-collector.js +177 -0
  206. package/dist/lib/telemetry/physical-world-collector.js.map +1 -0
  207. package/dist/lib/telemetry/training-bridge.d.ts +51 -0
  208. package/dist/lib/telemetry/training-bridge.d.ts.map +1 -0
  209. package/dist/lib/telemetry/training-bridge.js +185 -0
  210. package/dist/lib/telemetry/training-bridge.js.map +1 -0
  211. package/dist/lib/telemetry.d.ts +2 -1
  212. package/dist/lib/telemetry.d.ts.map +1 -1
  213. package/dist/lib/telemetry.js +23 -2
  214. package/dist/lib/telemetry.js.map +1 -1
  215. package/dist/lib/tenet-board-agent.d.ts +52 -0
  216. package/dist/lib/tenet-board-agent.d.ts.map +1 -0
  217. package/dist/lib/tenet-board-agent.js +226 -0
  218. package/dist/lib/tenet-board-agent.js.map +1 -0
  219. package/dist/lib/tenet-ide-agent.d.ts +40 -0
  220. package/dist/lib/tenet-ide-agent.d.ts.map +1 -0
  221. package/dist/lib/tenet-ide-agent.js +199 -0
  222. package/dist/lib/tenet-ide-agent.js.map +1 -0
  223. package/dist/lib/workspace/data-pipeline.d.ts.map +1 -1
  224. package/dist/lib/workspace/data-pipeline.js +27 -5
  225. package/dist/lib/workspace/data-pipeline.js.map +1 -1
  226. package/dist/lib/workspace/sidebar-runner.d.ts +13 -0
  227. package/dist/lib/workspace/sidebar-runner.d.ts.map +1 -0
  228. package/dist/lib/workspace/sidebar-runner.js +419 -0
  229. package/dist/lib/workspace/sidebar-runner.js.map +1 -0
  230. package/dist/lib/workspace/surface-registry.d.ts.map +1 -1
  231. package/dist/lib/workspace/surface-registry.js +9 -1
  232. package/dist/lib/workspace/surface-registry.js.map +1 -1
  233. package/dist/lib/workspace/surfaces/agent-overview.d.ts +3 -3
  234. package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -1
  235. package/dist/lib/workspace/surfaces/agent-overview.js +3 -3
  236. package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -1
  237. package/dist/lib/workspace/surfaces/index.d.ts +3 -0
  238. package/dist/lib/workspace/surfaces/index.d.ts.map +1 -1
  239. package/dist/lib/workspace/surfaces/index.js +3 -0
  240. package/dist/lib/workspace/surfaces/index.js.map +1 -1
  241. package/dist/lib/workspace/surfaces/kanban.d.ts +15 -0
  242. package/dist/lib/workspace/surfaces/kanban.d.ts.map +1 -0
  243. package/dist/lib/workspace/surfaces/kanban.js +43 -0
  244. package/dist/lib/workspace/surfaces/kanban.js.map +1 -0
  245. package/dist/lib/workspace/surfaces/physical-world.d.ts +15 -0
  246. package/dist/lib/workspace/surfaces/physical-world.d.ts.map +1 -0
  247. package/dist/lib/workspace/surfaces/physical-world.js +37 -0
  248. package/dist/lib/workspace/surfaces/physical-world.js.map +1 -0
  249. package/dist/lib/workspace/surfaces/sidebar.d.ts +22 -0
  250. package/dist/lib/workspace/surfaces/sidebar.d.ts.map +1 -0
  251. package/dist/lib/workspace/surfaces/sidebar.js +94 -0
  252. package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
  253. package/dist/lib/workspace/tmux-adapter.d.ts +8 -5
  254. package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -1
  255. package/dist/lib/workspace/tmux-adapter.js +38 -7
  256. package/dist/lib/workspace/tmux-adapter.js.map +1 -1
  257. package/dist/lib/workspace/tmux-sidebar.d.ts +14 -0
  258. package/dist/lib/workspace/tmux-sidebar.d.ts.map +1 -0
  259. package/dist/lib/workspace/tmux-sidebar.js +230 -0
  260. package/dist/lib/workspace/tmux-sidebar.js.map +1 -0
  261. package/dist/types/flows.d.ts +2 -1
  262. package/dist/types/flows.d.ts.map +1 -1
  263. package/dist/types/physical-world-model.d.ts +65 -0
  264. package/dist/types/physical-world-model.d.ts.map +1 -0
  265. package/dist/types/physical-world-model.js +43 -0
  266. package/dist/types/physical-world-model.js.map +1 -0
  267. package/dist/types/telemetry.d.ts +37 -0
  268. package/dist/types/telemetry.d.ts.map +1 -1
  269. package/dist/types/world-model.d.ts.map +1 -1
  270. package/dist/types/world-model.js +14 -7
  271. package/dist/types/world-model.js.map +1 -1
  272. package/dist/utils/context-hub-port.d.ts.map +1 -1
  273. package/dist/utils/context-hub-port.js +6 -1
  274. package/dist/utils/context-hub-port.js.map +1 -1
  275. package/dist/utils/jfl-config.d.ts +7 -2
  276. package/dist/utils/jfl-config.d.ts.map +1 -1
  277. package/dist/utils/jfl-config.js +14 -4
  278. package/dist/utils/jfl-config.js.map +1 -1
  279. package/package.json +3 -2
  280. package/packages/pi/extensions/context.ts +51 -1
  281. package/packages/pi/extensions/hub-tools.ts +247 -0
  282. package/packages/pi/extensions/index.ts +38 -6
  283. package/packages/pi/extensions/memory-tool.ts +84 -4
  284. package/packages/pi/extensions/service-skills.ts +214 -0
  285. package/scripts/telemetry-dashboard.sh +44 -0
  286. package/scripts/test-planning-loop-e2e.ts +181 -0
  287. package/scripts/test-server-inference.ts +49 -0
  288. package/scripts/test-state-sensitivity.ts +32 -0
  289. package/scripts/train/v2/benchmark.py +661 -0
  290. package/scripts/train/v2/generate_balanced.py +439 -0
  291. package/scripts/train/v2/generate_hard_negatives.py +219 -0
  292. package/scripts/train/v2/infer.py +149 -36
  293. package/scripts/train/v2/infer_server.py +224 -0
  294. package/scripts/train/v2/online_train.py +576 -0
  295. package/scripts/train/v2/precompute.py +24 -6
  296. package/template/CLAUDE.md +74 -132
@@ -0,0 +1,191 @@
1
+ /**
2
+ * jfl start โ€” One-command activation
3
+ *
4
+ * Chains: init โ†’ setup โ†’ launch (Claude Code or Pi)
5
+ * New user goes from zero to working self-driving loop in <2 minutes.
6
+ *
7
+ * Usage:
8
+ * jfl start # Interactive โ€” creates GTM in current dir or new dir
9
+ * jfl start ./my-project # Create GTM workspace at path
10
+ * jfl start --repo ./my-app # Analyze existing repo, create sibling GTM
11
+ * jfl start --pi # Launch Pi instead of Claude Code
12
+ * jfl start --ci # Also deploy CI workflows
13
+ *
14
+ * @purpose One-command activation: zero โ†’ working intelligence in <2 minutes
15
+ */
16
+ import chalk from "chalk";
17
+ import { existsSync, readFileSync } from "fs";
18
+ import { join, resolve, basename } from "path";
19
+ import { execSync, spawn } from "child_process";
20
+ export async function startCommand(nameOrPath, options = {}) {
21
+ const cwd = process.cwd();
22
+ console.log();
23
+ console.log(chalk.bold.hex("#00FF88")(" โšก JFL Start"));
24
+ console.log(chalk.gray(" Zero โ†’ working intelligence in one command"));
25
+ console.log();
26
+ // โ”€โ”€โ”€ Step 1: Init โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
27
+ let projectPath;
28
+ // Check if we're already in a JFL project
29
+ const existingConfig = join(cwd, ".jfl", "config.json");
30
+ if (existsSync(existingConfig)) {
31
+ projectPath = cwd;
32
+ console.log(chalk.cyan(" โœ“") + chalk.gray(` Existing project: ${basename(projectPath)}`));
33
+ }
34
+ else if (options.repo) {
35
+ // Create GTM from existing service repo
36
+ const repoPath = resolve(options.repo);
37
+ console.log(chalk.cyan(" โ†’") + ` Analyzing ${basename(repoPath)} and creating GTM...`);
38
+ try {
39
+ execSync(`jfl init --from-service --non-interactive`, {
40
+ cwd: repoPath,
41
+ stdio: "inherit",
42
+ timeout: 120000,
43
+ });
44
+ // Find the created GTM directory (sibling to the repo)
45
+ const parentDir = join(repoPath, "..");
46
+ const repoName = basename(repoPath);
47
+ const gtmCandidates = [
48
+ join(parentDir, `${repoName}-gtm`),
49
+ join(parentDir, `${repoName}`),
50
+ ];
51
+ projectPath = gtmCandidates.find(p => existsSync(join(p, ".jfl", "config.json"))) || repoPath;
52
+ }
53
+ catch (err) {
54
+ console.log(chalk.red(` โœ— Init from service failed: ${err.message}`));
55
+ return;
56
+ }
57
+ }
58
+ else if (nameOrPath) {
59
+ // Create new GTM workspace
60
+ const targetPath = resolve(nameOrPath);
61
+ if (existsSync(join(targetPath, ".jfl", "config.json"))) {
62
+ projectPath = targetPath;
63
+ console.log(chalk.cyan(" โœ“") + chalk.gray(` Existing project: ${basename(projectPath)}`));
64
+ }
65
+ else {
66
+ console.log(chalk.cyan(" โ†’") + ` Creating workspace: ${nameOrPath}`);
67
+ try {
68
+ const args = [
69
+ "init", nameOrPath,
70
+ "--non-interactive",
71
+ ...(options.ci ? ["--ci"] : []),
72
+ ...(options.service?.map(s => `--service=${s}`) ?? []),
73
+ ];
74
+ execSync(`jfl ${args.join(" ")}`, {
75
+ cwd,
76
+ stdio: "inherit",
77
+ timeout: 120000,
78
+ });
79
+ projectPath = resolve(cwd, nameOrPath);
80
+ }
81
+ catch (err) {
82
+ console.log(chalk.red(` โœ— Init failed: ${err.message}`));
83
+ return;
84
+ }
85
+ }
86
+ }
87
+ else {
88
+ // Interactive: create in current directory
89
+ console.log(chalk.cyan(" โ†’") + " Creating workspace in current directory...");
90
+ try {
91
+ execSync("jfl init --non-interactive", {
92
+ cwd,
93
+ stdio: "inherit",
94
+ timeout: 120000,
95
+ });
96
+ projectPath = cwd;
97
+ }
98
+ catch (err) {
99
+ console.log(chalk.red(` โœ— Init failed: ${err.message}`));
100
+ return;
101
+ }
102
+ }
103
+ // โ”€โ”€โ”€ Step 2: Setup (with starter intelligence) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
104
+ console.log();
105
+ console.log(chalk.cyan(" โ†’") + " Configuring intelligence...");
106
+ try {
107
+ execSync("jfl setup --force", {
108
+ cwd: projectPath,
109
+ stdio: "inherit",
110
+ timeout: 120000,
111
+ });
112
+ }
113
+ catch (err) {
114
+ console.log(chalk.yellow(` โš  Setup had issues: ${err.message}`));
115
+ console.log(chalk.gray(" You can re-run: jfl setup"));
116
+ }
117
+ // โ”€โ”€โ”€ Step 3: Deploy CI (if requested) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
118
+ if (options.ci) {
119
+ console.log();
120
+ console.log(chalk.cyan(" โ†’") + " Deploying CI workflows...");
121
+ try {
122
+ execSync("jfl ci setup", {
123
+ cwd: projectPath,
124
+ stdio: "inherit",
125
+ timeout: 60000,
126
+ });
127
+ }
128
+ catch {
129
+ console.log(chalk.gray(" CI setup skipped โ€” run manually: jfl ci setup"));
130
+ }
131
+ }
132
+ // โ”€โ”€โ”€ Step 4: Show what's ready โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
133
+ console.log();
134
+ console.log(chalk.bold.hex("#00FF88")(" โœ… Intelligence active"));
135
+ console.log();
136
+ // Read what was created
137
+ const configPath = join(projectPath, ".jfl", "config.json");
138
+ let projectName = basename(projectPath);
139
+ if (existsSync(configPath)) {
140
+ try {
141
+ projectName = JSON.parse(readFileSync(configPath, "utf-8")).name || projectName;
142
+ }
143
+ catch { }
144
+ }
145
+ const hasEvals = existsSync(join(projectPath, ".jfl", "eval"));
146
+ const hasAgents = existsSync(join(projectPath, ".jfl", "agents"));
147
+ const hasFlows = existsSync(join(projectPath, ".jfl", "flows", "self-driving.yaml"));
148
+ const hasSpec = existsSync(join(projectPath, ".jfl", "specs"));
149
+ console.log(chalk.gray(" What's running:"));
150
+ if (hasEvals)
151
+ console.log(chalk.green(" โœ“") + " Eval scripts โ€” measuring project health");
152
+ if (hasAgents)
153
+ console.log(chalk.green(" โœ“") + " RL agents โ€” learning from your actions");
154
+ if (hasFlows)
155
+ console.log(chalk.green(" โœ“") + " Self-driving loop โ€” issues โ†’ PRs โ†’ auto-merge");
156
+ if (hasSpec)
157
+ console.log(chalk.green(" โœ“") + " TLA+ verification โ€” formal safety guarantees");
158
+ console.log(chalk.green(" โœ“") + " Context Hub โ€” aggregating intelligence");
159
+ console.log();
160
+ // โ”€โ”€โ”€ Step 5: Launch โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
161
+ if (options.noLaunch) {
162
+ console.log(chalk.gray(` Start manually: cd ${projectPath} && ${options.pi ? "pi" : "claude"}`));
163
+ return;
164
+ }
165
+ if (options.pi) {
166
+ console.log(chalk.hex("#FFA500")(" ๐Ÿš€ Launching Pi..."));
167
+ console.log();
168
+ const pi = spawn("pi", [], {
169
+ cwd: projectPath,
170
+ stdio: "inherit",
171
+ shell: true,
172
+ });
173
+ pi.on("error", () => {
174
+ console.log(chalk.red(" Pi not found. Install: npm install -g @mariozechner/pi-coding-agent"));
175
+ });
176
+ }
177
+ else {
178
+ console.log(chalk.hex("#FFA500")(" ๐Ÿš€ Launching Claude Code..."));
179
+ console.log(chalk.gray(" (use --pi to launch Pi instead)"));
180
+ console.log();
181
+ const claude = spawn("claude", ["--dangerously-skip-permissions"], {
182
+ cwd: projectPath,
183
+ stdio: "inherit",
184
+ shell: true,
185
+ });
186
+ claude.on("error", () => {
187
+ console.log(chalk.red(" Claude Code not found. Install: npm install -g @anthropic-ai/claude-code"));
188
+ });
189
+ }
190
+ }
191
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @purpose Real-time physical-world telemetry monitoring command
3
+ * Live dashboard showing physical-world data being collected
4
+ */
5
+ export declare function telemetryMonitorCommand(options: {
6
+ live?: boolean;
7
+ compact?: boolean;
8
+ interval?: string;
9
+ filter?: string;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=telemetry-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-monitor.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry-monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqCH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * @purpose Real-time physical-world telemetry monitoring command
3
+ * Live dashboard showing physical-world data being collected
4
+ */
5
+ import chalk from 'chalk';
6
+ import { readFileSync, existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { homedir } from 'os';
9
+ export async function telemetryMonitorCommand(options) {
10
+ const interval = parseInt(options.interval || '5') * 1000;
11
+ const isLive = options.live || false;
12
+ const isCompact = options.compact || false;
13
+ console.log(chalk.cyan('๐ŸŒ Physical-World Telemetry Monitor'));
14
+ console.log(chalk.gray(`Interval: ${interval / 1000}s | Live: ${isLive} | Filter: ${options.filter || 'all'}`));
15
+ console.log();
16
+ if (isLive) {
17
+ await startLiveMonitoring(interval, isCompact, options.filter);
18
+ }
19
+ else {
20
+ await showCurrentSnapshot(isCompact, options.filter);
21
+ }
22
+ }
23
+ async function startLiveMonitoring(interval, compact, filter) {
24
+ let stats = {
25
+ totalEvents: 0,
26
+ physicalWorldEvents: 0,
27
+ lastUpdate: new Date(),
28
+ thermalStates: {},
29
+ gitBranches: {}
30
+ };
31
+ const updateDisplay = () => {
32
+ const newStats = analyzeTelemetryData(filter);
33
+ if (newStats) {
34
+ stats = newStats;
35
+ clearScreen();
36
+ displayStats(stats, compact);
37
+ }
38
+ };
39
+ // Initial display
40
+ updateDisplay();
41
+ // Live updates
42
+ const updateInterval = setInterval(updateDisplay, interval);
43
+ // Watch for file changes (if telemetry files exist)
44
+ const telemetryDir = join(process.cwd(), '.jfl', 'telemetry');
45
+ if (existsSync(telemetryDir)) {
46
+ console.log(chalk.gray(`Watching ${telemetryDir} for changes...`));
47
+ }
48
+ // Handle Ctrl+C gracefully
49
+ process.on('SIGINT', () => {
50
+ clearInterval(updateInterval);
51
+ console.log(chalk.yellow('\n๐Ÿ“Š Monitoring stopped'));
52
+ process.exit(0);
53
+ });
54
+ console.log(chalk.gray('Press Ctrl+C to stop monitoring'));
55
+ }
56
+ async function showCurrentSnapshot(compact, filter) {
57
+ const stats = analyzeTelemetryData(filter);
58
+ if (stats) {
59
+ displayStats(stats, compact);
60
+ }
61
+ else {
62
+ console.log(chalk.yellow('โš ๏ธ No telemetry data found'));
63
+ console.log(chalk.gray('Run some jfl commands to generate telemetry data'));
64
+ }
65
+ }
66
+ function analyzeTelemetryData(filter) {
67
+ // Look for telemetry data in JFL standard locations
68
+ const telemetryPaths = [
69
+ // Standard JFL telemetry locations (XDG compliant)
70
+ join(homedir(), '.cache', 'jfl', 'telemetry-queue.jsonl'),
71
+ join(homedir(), '.local', 'share', 'jfl', 'telemetry-archive.jsonl'),
72
+ // Legacy locations
73
+ join(homedir(), '.jfl', 'telemetry.jsonl'),
74
+ join(process.cwd(), '.jfl', 'telemetry.jsonl'),
75
+ ];
76
+ let allEvents = [];
77
+ // Try to find and parse telemetry data
78
+ for (const telemetryPath of telemetryPaths) {
79
+ try {
80
+ if (existsSync(telemetryPath)) {
81
+ const content = readFileSync(telemetryPath, 'utf-8').trim();
82
+ if (content) {
83
+ const events = content.split('\n')
84
+ .filter(line => line.trim())
85
+ .map(line => {
86
+ try {
87
+ return JSON.parse(line);
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ })
93
+ .filter((event) => event !== null);
94
+ allEvents.push(...events);
95
+ }
96
+ }
97
+ }
98
+ catch (error) {
99
+ // Continue to next path
100
+ }
101
+ }
102
+ if (allEvents.length === 0) {
103
+ return null;
104
+ }
105
+ // Filter events if specified
106
+ if (filter) {
107
+ allEvents = allEvents.filter(event => event.category?.includes(filter) ||
108
+ event.event?.includes(filter) ||
109
+ JSON.stringify(event).toLowerCase().includes(filter.toLowerCase()));
110
+ }
111
+ // Get events from last hour for analysis
112
+ const oneHourAgo = Date.now() - (60 * 60 * 1000);
113
+ const recentEvents = allEvents.filter(event => {
114
+ const eventTime = new Date(event.ts).getTime();
115
+ return eventTime > oneHourAgo;
116
+ });
117
+ // Find physical-world events
118
+ const physicalWorldEvents = recentEvents.filter(event => event.cpu_usage_percent !== undefined ||
119
+ event.memory_usage_mb !== undefined ||
120
+ event.thermal_state !== undefined ||
121
+ event.system_load_1m !== undefined ||
122
+ event.git_branch !== undefined);
123
+ // Calculate stats
124
+ const stats = {
125
+ totalEvents: recentEvents.length,
126
+ physicalWorldEvents: physicalWorldEvents.length,
127
+ lastUpdate: new Date(),
128
+ thermalStates: {},
129
+ gitBranches: {}
130
+ };
131
+ if (physicalWorldEvents.length > 0) {
132
+ const cpuValues = physicalWorldEvents
133
+ .map(e => e.cpu_usage_percent)
134
+ .filter((val) => val !== undefined);
135
+ const memoryValues = physicalWorldEvents
136
+ .map(e => e.memory_usage_mb)
137
+ .filter((val) => val !== undefined);
138
+ const loadValues = physicalWorldEvents
139
+ .map(e => e.system_load_1m)
140
+ .filter((val) => val !== undefined);
141
+ if (cpuValues.length > 0) {
142
+ stats.avgCpu = cpuValues.reduce((a, b) => a + b) / cpuValues.length;
143
+ }
144
+ if (memoryValues.length > 0) {
145
+ stats.avgMemory = memoryValues.reduce((a, b) => a + b) / memoryValues.length;
146
+ }
147
+ if (loadValues.length > 0) {
148
+ stats.avgLoad = loadValues.reduce((a, b) => a + b) / loadValues.length;
149
+ }
150
+ // Count thermal states
151
+ physicalWorldEvents.forEach(event => {
152
+ if (event.thermal_state) {
153
+ stats.thermalStates[event.thermal_state] =
154
+ (stats.thermalStates[event.thermal_state] || 0) + 1;
155
+ }
156
+ });
157
+ // Count git branches
158
+ physicalWorldEvents.forEach(event => {
159
+ if (event.git_branch) {
160
+ stats.gitBranches[event.git_branch] =
161
+ (stats.gitBranches[event.git_branch] || 0) + 1;
162
+ }
163
+ });
164
+ }
165
+ return stats;
166
+ }
167
+ function displayStats(stats, compact) {
168
+ const timestamp = stats.lastUpdate.toLocaleTimeString();
169
+ console.log(chalk.bold(`๐Ÿ“Š Physical-World Telemetry Stats (${timestamp})`));
170
+ console.log();
171
+ // Event counts
172
+ const physicalPct = stats.totalEvents > 0
173
+ ? Math.round((stats.physicalWorldEvents / stats.totalEvents) * 100)
174
+ : 0;
175
+ console.log(`${chalk.cyan('Events (last hour):')} ${stats.totalEvents} total, ${stats.physicalWorldEvents} physical-world (${physicalPct}%)`);
176
+ if (stats.physicalWorldEvents === 0) {
177
+ console.log(chalk.yellow('โš ๏ธ No physical-world data captured recently'));
178
+ console.log(chalk.gray('Try running: jfl status, jfl build, or other commands'));
179
+ return;
180
+ }
181
+ console.log();
182
+ // System metrics
183
+ if (stats.avgCpu !== undefined || stats.avgMemory !== undefined || stats.avgLoad !== undefined) {
184
+ console.log(chalk.bold('๐Ÿ–ฅ๏ธ System Metrics (averages):'));
185
+ if (stats.avgCpu !== undefined) {
186
+ const cpuColor = stats.avgCpu > 80 ? 'red' : stats.avgCpu > 60 ? 'yellow' : 'green';
187
+ console.log(` CPU Usage: ${chalk[cpuColor](`${stats.avgCpu.toFixed(1)}%`)}`);
188
+ }
189
+ if (stats.avgMemory !== undefined) {
190
+ const memoryGb = (stats.avgMemory / 1024).toFixed(1);
191
+ console.log(` Memory: ${chalk.cyan(`${memoryGb} GB`)}`);
192
+ }
193
+ if (stats.avgLoad !== undefined) {
194
+ const loadColor = stats.avgLoad > 2.0 ? 'red' : stats.avgLoad > 1.0 ? 'yellow' : 'green';
195
+ console.log(` System Load: ${chalk[loadColor](stats.avgLoad.toFixed(2))}`);
196
+ }
197
+ console.log();
198
+ }
199
+ // Thermal states
200
+ if (Object.keys(stats.thermalStates).length > 0) {
201
+ console.log(chalk.bold('๐ŸŒก๏ธ Thermal States:'));
202
+ for (const [state, count] of Object.entries(stats.thermalStates)) {
203
+ const stateColor = state === 'hot' ? 'red' : state === 'warm' ? 'yellow' : 'green';
204
+ console.log(` ${chalk[stateColor](state)}: ${count} events`);
205
+ }
206
+ console.log();
207
+ }
208
+ // Git branches
209
+ if (Object.keys(stats.gitBranches).length > 0 && !compact) {
210
+ console.log(chalk.bold('๐ŸŒฟ Git Branches:'));
211
+ const sortedBranches = Object.entries(stats.gitBranches)
212
+ .sort(([, a], [, b]) => b - a)
213
+ .slice(0, 5); // Top 5 branches
214
+ for (const [branch, count] of sortedBranches) {
215
+ console.log(` ${chalk.green(branch)}: ${count} events`);
216
+ }
217
+ console.log();
218
+ }
219
+ console.log(chalk.gray('๐Ÿ’ก Physical-world data captured: CPU, memory, thermal, git, terminals, IDE, network'));
220
+ }
221
+ function clearScreen() {
222
+ process.stdout.write('\x1b[2J\x1b[0f');
223
+ }
224
+ //# sourceMappingURL=telemetry-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-monitor.js","sourceRoot":"","sources":["../../src/commands/telemetry-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @purpose Generate test physical-world telemetry data for monitoring
3
+ * Internal command for testing the telemetry monitoring system
4
+ */
5
+ export declare function telemetryTestCommand(options: {
6
+ count?: string;
7
+ interval?: string;
8
+ categories?: string;
9
+ }): Promise<void>;
10
+ export declare function generateSamplePhysicalWorldData(): Promise<any>;
11
+ //# sourceMappingURL=telemetry-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-test.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry-test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhB;AAED,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,CAcpE"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @purpose Generate test physical-world telemetry data for monitoring
3
+ * Internal command for testing the telemetry monitoring system
4
+ */
5
+ import chalk from 'chalk';
6
+ import { physicalWorldCollector } from '../lib/telemetry/physical-world-collector.js';
7
+ import { telemetry } from '../lib/telemetry.js';
8
+ export async function telemetryTestCommand(options) {
9
+ const count = parseInt(options.count || '10');
10
+ const interval = parseInt(options.interval || '1000');
11
+ const categories = (options.categories || 'command,performance,session').split(',');
12
+ console.log(chalk.cyan('๐Ÿงช Generating test physical-world telemetry data'));
13
+ console.log(chalk.gray(`Count: ${count} events | Interval: ${interval}ms | Categories: ${categories.join(', ')}`));
14
+ console.log();
15
+ const testEvents = [
16
+ { category: 'command', event: 'test_command_execution', command: 'status' },
17
+ { category: 'command', event: 'test_build_operation', command: 'build' },
18
+ { category: 'performance', event: 'test_performance_measurement' },
19
+ { category: 'session', event: 'test_session_activity' },
20
+ { category: 'context_hub', event: 'test_hub_operation' },
21
+ ];
22
+ for (let i = 0; i < count; i++) {
23
+ const eventTemplate = testEvents[Math.floor(Math.random() * testEvents.length)];
24
+ // Only generate events for requested categories
25
+ if (!categories.includes(eventTemplate.category)) {
26
+ continue;
27
+ }
28
+ console.log(chalk.gray(`[${i + 1}/${count}]`), `Generating ${eventTemplate.category}:${eventTemplate.event}`);
29
+ try {
30
+ // Generate the telemetry event with physical-world data
31
+ await telemetry.track({
32
+ category: eventTemplate.category,
33
+ event: `${eventTemplate.event}_${i + 1}`,
34
+ command: eventTemplate.command,
35
+ duration_ms: Math.floor(Math.random() * 2000) + 100,
36
+ success: Math.random() > 0.1, // 90% success rate
37
+ });
38
+ // Add some delay between events
39
+ if (i < count - 1) {
40
+ await new Promise(resolve => setTimeout(resolve, interval));
41
+ }
42
+ }
43
+ catch (error) {
44
+ console.log(chalk.yellow(` Warning: Failed to generate event ${i + 1}`));
45
+ }
46
+ }
47
+ console.log();
48
+ console.log(chalk.green('โœ… Test telemetry data generated!'));
49
+ console.log(chalk.gray(' Run: jfl telemetry monitor --live'));
50
+ console.log(chalk.gray(' Or: jfl telemetry monitor'));
51
+ }
52
+ export async function generateSamplePhysicalWorldData() {
53
+ const baseEvent = {
54
+ category: 'command',
55
+ event: 'sample_data_generation',
56
+ ts: new Date().toISOString(),
57
+ };
58
+ try {
59
+ const enhancedEvent = await physicalWorldCollector.collect(baseEvent);
60
+ return enhancedEvent;
61
+ }
62
+ catch (error) {
63
+ console.error('Failed to collect physical-world data:', error);
64
+ return baseEvent;
65
+ }
66
+ }
67
+ //# sourceMappingURL=telemetry-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-test.js","sourceRoot":"","sources":["../../src/commands/telemetry-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @purpose Tenet agents command - manage and monitor RL learning agents
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function createTenetAgentsCommand(): Command;
6
+ interface AgentsOptions {
7
+ agent?: string;
8
+ insightId?: string;
9
+ feedback?: 'helpful' | 'not_helpful' | 'needs_adjustment';
10
+ }
11
+ export declare function tenentAgentsCommand(action?: string, options?: AgentsOptions): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=tenet-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenet-agents.d.ts","sourceRoot":"","sources":["../../src/commands/tenet-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,wBAAwB,IAAI,OAAO,CAclD;AAED,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,kBAAkB,CAAA;CAC1D;AAED,wBAAsB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CrG"}